с acts_as_commentable
, как было предложено Пауло или polymorphic-association
http://asciicasts.com/episodes/154-polymorphic-association
или PRO счет на Railscasts: http://railscasts.com/episodes/154-polymorphic-association-revised (РЕПО: https://github.com/railscasts/154-polymorphic-association-revised/tree/master/blog-after)
немного измененный код ниже, этот код позволит вам добавлять комментарии до Post
только при загрузке @commentable
с @commentable = Post.find(params[:id])
, если вы пройдете учебное пособие, вы сможете добавлять комментарии к любым другим моделям приложения, в которых пользователь и почта могут совместно использовать тот же Commen t модель.
Я использовал acts_as_commentable
в моем приложении раньше, хороший драгоценный камень, но я использую polymorphic-association
теперь вызывают его гораздо более настраиваемое.
post.rb
attr_accessible :content, :name
has_many :comments, as: :commentable
comment.rb
attr_accessible :content
belongs_to :commentable, polymorphic: true
show.html.erb
<h1>Comments</h1>
<ul id="comments">
<% @comments.each do |comment| %>
<li><%= comment.content %></li>
<% end %>
</ul>
<h2>New Comment</h2>
<%= form_for [@commentable, @comment] do |f| %>
<ol class="formList">
<li>
<%= f.label :content %>
<%= f.text_area :content, :rows => 5 %>
</li>
<li><%= f.submit "Add comment" %></li>
</ol>
<% end %>
posts_controller
def show
@post = Post.find(params[:id])
@commentable = @post
@comments = @commentable.comments
@comment = Comment.new
end
comments_controller
def create
@commentable = Post.find(params[:id])
@comment = @commentable.comments.new(params[:comment])
if @comment.save
redirect_to @commentable, notice: "Comment created."
else
render :new
end
end
маршруты.гь
resources :posts do
resources :comments
end
Какие изменения должны быть в файле route.config для comments_controller –
Я обновил весь ответ, а не только маршруты – rmagnum2002
+1 @AkashShinde: Вот пример приложения для [154-polymorphic-association-revision] (https: // github. ком/Railscasts/154-полиморфный-ассоциации-доработанное/дерево/мастер/блог-после). Но если вы хотите использовать 'act_as_commentable' здесь базовую систему [commenting system - actions_as_commentable] (http://www.arailsdemo.com/posts/16) –