2016-07-25 51 views
0

我有两个模型发布和评论。Rails:如何在新的动作中初始化实例变量

class Post < ActiveRecord::Base 
has_many :comments 
end 

class Comment < ActiveRecord::Base 
belongs_to :post 
end 

我为创造新的评论形式如下

<%= form_for @comment , :url => post_comments_path(params[:post_id]) do |f| %> 
    <%= f.text_area :title %> 
    <%= f.submit "Add Comment" %> 
<% end %> 

我有上述形式的新的行动混乱。在新行动中,我可以用以下两种方式初始化@comment实例变量。

@comment = Comment.new 

or 

@post = Post.find(params[:id) 
@comment = @post.comments.build(set_params) 

我的问题是Comment.new和@ post.comments.build(set_params)之间有什么区别。

+0

第一条评论不会有'post_id'属性集。这是全部的区别 –

+0

根据你如何处理评论的创建,一个或另一个形式可能是可取的。 –

回答

0

后者是首选,因为它会在注释上设置post_id