无法从Post视图创建评论

时间:2012-12-06 21:42:56

标签: ruby-on-rails ruby

我有Post的模型has_many :comments。发布评论的表单将与posts/show.html.erb中的帖子一起显示。我有一个comments_controller来处理评论的创建。在谷歌搜索,我找到了

<%= form_for([@post, Comment.new], :controller => 'comments', :action => 'create') do |f| %>

但这不起作用。我该怎么做?

1 个答案:

答案 0 :(得分:1)

class Post < ActiveRecord::Base
  has_many :comments

  accepts_nested_attributes_for :comments
#...

class Comment < ActiveRecord::Base
  belongs_to :post
#...

然后以表格

form_for @post do |f|
  f.fields_for :comments do |c|
    c.text_field :title
    #...
  f.submit

这将通过活动记录的accepts_nested_attributes_for创建关联对象,这不需要单独的comments_controller。您正在提交发布控制器,该控制器正在处理在更新帖子期间创建关联对象的操作。

使用comments_controller,您可以执行以下两项操作之一:

将item_id作为param发送到comments_controller #new,抓取该项目,然后从中构建新评论

@post = Post.find(params[:item_id); @comment = @post.comments.build

将post_id放在表单上的隐藏字段中,只需按正常情况创建注释

# in the controller
@comment = Comment.create(params[:comment])

# in the view
form_for @comment do |f|
  f.text_field :title
  #...
  f.hidden_field :post_id, value: @post.id