我正在使用 Rails 构建一个简单的博客,并且正在遵循普通的 Rails 入门指南 ( http://guides.rubyonrails.org/getting_started.html )。我在我的帖子的 show 方法中设置了一个评论表单,但是当我保存时,它没有将 page_id 保存在评论记录中。
= form_for [@post, @post.comments.build], :remote => true do |f|
.field
= f.label :name
= f.text_field :name
.field
= f.label :extra_field, @page.rsvp_extra_field
= f.text_area :extra_field
.actions
= f.submit 'Save'
post.rb
class Post < ActiveRecord::Base
has_many :comments, dependent: :destroy
attr_accessible :comments_attributes, :comment_attributes
accepts_nested_attributes_for :comments, :allow_destroy => true
end
评论.rb
class Comment < ActiveRecord::Base
belongs_to :post
attr_accessible :extra_field, :name, :post_id, :phone
end
我在 Rails 控制台中看到它正在发布它,但是NULL
为 post_id 放置。有什么想法吗?
编辑
我根本没有改变我的创建方法:
def create
@comment = Comment.new(params[:comment])
respond_to do |format|
if @comment.save
format.html { redirect_to post_url, notice: 'Comment was successfully created.' }
format.json { render json: @comment, status: :created, location: @comment }
else
format.html { render action: "new" }
format.json { render json: @comment.errors, status: :unprocessable_entity }
end
end
end
编辑 2
我认为我的参数是嵌套的,当我不希望它们成为......任何想法如何在“comment”数组中获取这个“post_id”?
Parameters: {"utf8"=>"✓", "authenticity_token"=>"eqe6C7/ND35TDwtJ95w0fJVk4PSvznCR01T4OzuA49g=",
"comment"=>{"name"=>"test", "extra_field"=>""}, "commit"=>"Save", "post_id"=>"8"}