无法为评论指定质量属性?

时间:2014-02-21 01:59:00

标签: ruby-on-rails

无法批量分配受保护的属性: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

1 个答案:

答案 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