我正在尝试分配belongs_to答案的评论(并回答has_many评论),并且无法分配大量受保护的属性:answer。
这是我的commentsController
class CommentsController < ApplicationController
def create
@answer = Answer.find(params[:answer_id])
@comment = @answer.comments.new(params[:comment])
@comment.save
redirect_to question_path(@answer)
end
端
这是我正在使用的页面的答案控制器
def show
@answer = Answer.find(params[:id])
@comment = @answer.comments.new(params[:comment])
end
我的答案模型accepted_nested_attributes用于评论。
这是我的表格,
<%= form_for([@answer, @comment]) do |f| %>
<p>
</p>
<p>
<%= f.label :comment %>
<%= f.text_area :answer, :cols => "50", :rows => "30"%>
</p>
<p>
<%= f.submit "Submit Comment" %>
</p>
有什么想法吗?
答案 0 :(得分:2)
你应该在你的评论控制器中使用它之前允许使用params,在rails4中你可以这样做
class CommentsController < ApplicationController
def create
@answer = Answer.find(params[:answer_id])
@comment = @answer.comments.new(params.require(:comment).permit(:answer))
@comment.save
redirect_to question_path(@answer)
end
end
或者您也可以在注释控制器中定义一个允许参数的方法
def comment_params
params.require(:comment).permit(:answer)
end
然后在您的控制器中使用此函数创建一个新记录as-
@comment = @answer.comments.new(comment_params)
@comment.save
正如你所说的那样,在回答类似
的问题时,你已经嵌套了评论class Answer < ActiveRecord::Base
has_many :comments, dependent: :destroy
accepts_nested_attributes_for :comments
end
你也在使用attr_accessible所以允许以嵌套形式使用params你必须这样做
attr_accessible :comments_attributes
以及答案中的答案.rb