无法批量分配受保护的属性:answer。 (使用Rails3)
我不确定为什么它不允许我这样做,因为我可以访问我的嵌套属性。
这是我的答案模型
class Answer < ActiveRecord::Base
has_many :comments, dependent: :destroy
belongs_to :question
attr_accessible :anonymous, :answer, :commenter, :votes, :comments_attributes
accepts_nested_attributes_for :comments
end
这是我的评论模型
class Comment < ActiveRecord::Base
belongs_to :answer
attr_accessible :anonymous, :comment, :writer, :votes
end
我在视图中以这种形式失败
<%= form_for([@answer, @comment]) do |f| %>
<p>
<%= f.label :comment %>
<%= f.text_area :comment, :cols => "50", :rows => "30"%>
</p>
<p>
<%= f.submit "Submit Comment" %>
</p>
<% end %>
这是我在commentsController中的功能,显然是导致错误
def create
@answer = Answer.find(params[:answer_id])
@comment = @answer.comments.new(params[:comment])
@comment.save
redirect_to question_path(@answer)
end
答案 0 :(得分:0)
您的观看代码在技术上并不正确。您需要使用fields_for:
<%= form_for([@answer, @comment]) do |f| %>
<p>
<%= f.fields_for :comments do |u| %>
<%= u.label :comment %>
<%= u.text_area :comment, :cols => "50", :rows => "30"%>
<% end %>
</p>
<p>
<%= f.submit "Submit Comment" %>
</p>
<% end %>
您可能还需要从form_For帮助程序中删除@comment。在fields_For中,您可能需要用户:comment或甚至@comment。
如果您使用的是rails 4,那么您也会遇到强参数问题:http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html