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/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/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 96f65e5..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 @@ -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/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 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 %> 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 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