馬克的程式架構筆記

為了創造有價值的產品,想法、實作架構、行銷有同等的重要性

Gem Acts_as_commentable

針對rails102作業裡的acts_as_commentable給一些說明。

當然也可以自已建一個對應Posts的Comments Table。 但主要有的時候你的評論不一定只用在一篇文章,也有可能針對像圖片,連結等等的物件,那就可以考慮以這個Gem做處理。

主要安裝過程(for rails4)

在Gemfile加入

1
gem 'acts_as_commentable'

generator對應的程式碼

1
rails g comment

在你需要加評論的對象moel上加acts_as_commentable

1
2
3
class Post < ActiveRecord::Base
  acts_as_commentable
end

自已寫對應的method和route來處理新增評論的情況,有幾個點要注意,以下是範例

1.在你的user.rb下加入

1
has_many :comments

2.在你的posts_controller.rb會加入類似如下的code

1
2
3
4
5
6
7
8
9
10
11
def create_comment
  @post = Post.find(params[:id])
  comment = @post.comments.create(comment_params)
  comment.author = current_user
  comment.save
  redirect_to post_path(@post)
end

def comment_params
  params.require(:comment).permit(:comment)
end

3.在routes.rb加入

1
  post "/posts/:id/comments/create" => "posts#create_comment"

4.posts/show.html.erb加入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  <% @post.comments.each do |comment| %>
    <table>
      <tr><%= comment.author.email %> 表示:</tr>
      <td>
        <%= comment.comment %>
      </td>
    </table>
  <% end %>
  <div>
    <%= form_for(@comment,:url => post_path(@post)+'/comments/create') do |f|  %>
    <%= f.text_area :comment %>
    <%= f.submit "留言" %>
    <% end %>
  </div>

筆記供參考,但最好了解一下為什麼要加入這些code的理由和它做了些什麼事,幫助會更大。

參考文章主要是http://juixe.com/techknow/index.php/2006/06/18/acts-as-commentable-plugin/

Comments