2

Я потратил столько времени на это и потерял половину моих волос, потянув его. Помогите.обновить вложенный атрибут: ПРЕДУПРЕЖДЕНИЕ. Невозможно назначить защищенные атрибуты: error

user:

has_may :rights 
    attr_accessible :rights_attributes 

right:

belongs_to :user 
    attr_accessible :user_id, :pgd_id, :link_id 

Вид:

<%= semantic_form_for @user, :url => {:action => "rightsupdate", :id => @user.id} do |f| %>$ 
    <%= f.inputs do %>$ 
    <%= f.input :pgds, :as => :check_boxes, :required => false %>$ 
    <% end %>$ 
    <%= f.input :link_id, :value => @owner.link_id, :as => :hidden %>$ 
    <%= f.buttons %>$ 
<% end %>$ 

но когда я обновляю его твердит:

WARNING: Can't mass-assign protected attributes: pgd_ids, link_id 

Я могу обойти pdg, добавив :pgd_ids пользователю attr_accessible, но не link_id. link_id вставляется как NULL.

+0

Извините, что схема кода перепуталась. Он отлично работал, когда я добавил его – nafkot

+0

Я немного поиграл с ним - вам нужны пустые строки, чтобы отделить абзацы от форматирования кода. – sarnold

+0

спасибо @sarnold – nafkot

ответ

0

Прежде всего, вам необходимо убедиться, что модель включает accepts_nested_attributes.

user.rb

attr_accessible :rights_attributes 
has_may :rights 
accepts_nested_attributes :rights 

Затем нужно обернуть поля прав в fields_for блоке. Похоже, что вы используете Formtastic, который я не знаком с, но я думаю, что это должно выглядеть примерно так:

<%= semantic_form_for @user, :url => {:action => "rightsupdate", :id => @user.id} do |f| %> 
    <%= f.semantic_fields_for :rights do |builder| %> 
    <%= builder.inputs do %> 
     <%= builder.input :pgds, :as => :check_boxes, :required => false %> 
    <% end %> 
    <%= builder.input :link_id, :value => @owner.link_id, :as => :hidden %> 
    <%= builder.buttons %> 
    <% end %> 
<% end %> 

Railscasts имеет целый ряд бесплатных скринкаста на вложенных формах, которые стоили бы проверить выше код не решает проблему.

+0

Спасибо. accepts_nested_attributes_for: права уже есть. ваш код просмотра завершил дублирование параметров. Я попробую изменить его. – nafkot

+0

Вышеописанное решение не обновляется. но спасибо за ответ @nmott, мой старый, по-прежнему говорит, не может массовое обновление – nafkot

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