2014-02-21 2 views
0

Невозможно назначить защищенные атрибуты: ответ. (Использование 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 %> 

Это моя функция в мои комментарииКонтроллер, который, по-видимому, вызывает ошибку

def create 
    @answer = Answer.find(params[:answer_id]) 
    @comment = @answer.comments.new(params[:comment]) 
    @comment.save 
     redirect_to question_path(@answer) 
end 
+0

Какую версию Rails вы используете? Посмотрите в свой Gemfile. – Mohamad

+0

Использование рельсов 3 - – google1254

ответ

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 %> 

также может потребоваться удалить @comment от помощника form_for. В fields_For вам может потребоваться пользователь: комментарий или, возможно, даже @comment.

Если вы используете рельсы 4, то вы также будете иметь проблемы с сильными параметрами: http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html

+0

Почему? Кроме того, это, похоже, не решает проблему, к сожалению – google1254

Смежные вопросы