From 980ec8c14e313d21e290739e2c2899fcdfc1883c Mon Sep 17 00:00:00 2001 From: lkwu Date: Fri, 29 Apr 2016 17:24:39 +0800 Subject: [PATCH 1/5] Add message delete Ajax --- Gemfile.lock | 4 ++-- app/controllers/messages_controller.rb | 5 ++++- app/views/messages/destroy.js.erb | 1 + app/views/messages/index.html.erb | 6 +++--- 4 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 app/views/messages/destroy.js.erb diff --git a/Gemfile.lock b/Gemfile.lock index e1b93b6..d061c81 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -116,7 +116,7 @@ GEM activesupport (= 4.2.2) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rake (10.4.2) + rake (11.1.2) rdoc (4.2.0) responders (2.1.0) railties (>= 4.2.0, < 5) @@ -195,4 +195,4 @@ DEPENDENCIES web-console (~> 2.0) BUNDLED WITH - 1.10.5 + 1.11.2 diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 96f65e5..9b9742a 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -56,7 +56,10 @@ def destroy @message = current_user.messages.find( params[:id] ) @message.destroy - redirect_to root_path + respond_to do |format| + format.html { redirect_to :back } + format.js + end end protected diff --git a/app/views/messages/destroy.js.erb b/app/views/messages/destroy.js.erb new file mode 100644 index 0000000..1c6dc82 --- /dev/null +++ b/app/views/messages/destroy.js.erb @@ -0,0 +1 @@ +$("#message-<%= @message.id %>").remove(); diff --git a/app/views/messages/index.html.erb b/app/views/messages/index.html.erb index edac212..1f735fa 100644 --- a/app/views/messages/index.html.erb +++ b/app/views/messages/index.html.erb @@ -24,7 +24,7 @@ <% @messages.each do |msg| %> - + <%= link_to msg.title, message_path(msg) %> <%= msg.status %> <%= msg.category_name %> @@ -34,11 +34,11 @@ <% if msg.user == current_user %> <%= link_to "Edit", edit_message_path(msg) %> - <%= link_to "Delete", message_path(msg), :method => :delete, :data => { :confirm => "Are u sure?"} %> + <%= link_to "Delete", message_path(msg), :method => :delete, :data => { :confirm => "Are u sure?"}, :remote => true %> <% end %> <% end %> -<%= paginate @messages %> \ No newline at end of file +<%= paginate @messages %> From 6f30a34fc41085505d95e2eb91c27cc46929a3e8 Mon Sep 17 00:00:00 2001 From: lkwu Date: Fri, 29 Apr 2016 17:33:42 +0800 Subject: [PATCH 2/5] Improve N+1 queries for reviewing messages --- app/controllers/messages_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 9b9742a..8e0dbc8 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -4,7 +4,7 @@ class MessagesController < ApplicationController def index # TODO: fix N+1 queries for user and comments - @messages = Message.order("id DESC").page( params[:page] ) + @messages = Message.order("id DESC").includes(:comments).page( params[:page] ) if params[:status] == "pending" # TODO: @messages = @messages.pending From 480032a3e5af329b6f907fc47ef432f9e015ade9 Mon Sep 17 00:00:00 2001 From: lkwu Date: Fri, 29 Apr 2016 19:34:30 +0800 Subject: [PATCH 3/5] Add index API --- app/controllers/api_controller.rb | 2 ++ app/controllers/api_v1/messages_controller.rb | 6 ++++++ config/routes.rb | 5 +++++ 3 files changed, 13 insertions(+) create mode 100644 app/controllers/api_controller.rb create mode 100644 app/controllers/api_v1/messages_controller.rb diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb new file mode 100644 index 0000000..5f381d2 --- /dev/null +++ b/app/controllers/api_controller.rb @@ -0,0 +1,2 @@ +class ApiController < ActionController::Base +end diff --git a/app/controllers/api_v1/messages_controller.rb b/app/controllers/api_v1/messages_controller.rb new file mode 100644 index 0000000..773bfed --- /dev/null +++ b/app/controllers/api_v1/messages_controller.rb @@ -0,0 +1,6 @@ +class ApiV1::MessagesController < ApiController + + def index + render json: Message.all + end +end diff --git a/config/routes.rb b/config/routes.rb index 74d4dbf..312a5b4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,4 +1,9 @@ Rails.application.routes.draw do + + scope :path => '/api/v1/', :module => "api_v1", :as => 'v1', :defaults => { :format => :json } do + resources :messages + end + devise_for :users resources :messages do From 42f5434222d96f8123a8b6f366d13aaa3c4b7151 Mon Sep 17 00:00:00 2001 From: lkwu Date: Fri, 29 Apr 2016 19:51:25 +0800 Subject: [PATCH 4/5] posts_count test --- app/models/user.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/models/user.rb b/app/models/user.rb index 6d01aa9..883d1d9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -13,6 +13,7 @@ def display_name def posts_count # TODO: 請完成我 + self.messages.count + self.comments.count end def words_count From 9bfbd48618d3e1c1f8a14b5358eca87d2cb3dc1f Mon Sep 17 00:00:00 2001 From: lkwu Date: Fri, 29 Apr 2016 20:56:45 +0800 Subject: [PATCH 5/5] Add word_count spec --- spec/models/user_spec.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 528cc38..347809b 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -25,11 +25,13 @@ describe "#words_count" do before do # TODO: 加 Message 和 Comment 測試資料 + m = Message.create!( :user => @user, :title => "fasd sdfa", :content => "ef fref fer" ) + c = Comment.create!( :user => @user, :message => m, :content => "fd fdsf" ) end it "加總該使用者的所有 Mesasge 和 Comment 的總字數" do # TODO: 測試 words_count 方法 - + expect( @user.words_count ).to eq(7) end end