Я проверил многочисленные сообщения здесь и применил десятки ответов без успеха. Итак, вот он ... сохранил это просто ... включая использование simple_form.Невозможно назначить защищенные атрибуты в ассоциации has_one в Rails 3.2
В моей модели пользователя у меня есть:
has_one :instrument
accepts_nested_attributes_for :instrument
attr_accessible ... :instrument_attributes
В моей модели инструмента у меня есть:
belongs_to :user
attr_accessible :user_id, :do_inst1, :do_inst2, :do_inst3, :do_inst4
В моей UsersController у меня есть:
def new
@user = User.new
@user.build_instrument
end
def create_user
@user = User.new(params[:user]) # <== THE LINE PRODUCING THE ERROR
respond_to do |format|
if @user.save
format.html {redirect_to users_path, notice: "User created successfully."}
else
format.html { render action: "new" }
end
end
end
В моем новом пользователе _form .html.erb У меня есть:
<%= simple_nested_form_for :user, url: create_user_users_path do |f| %>
<%= f.input :first_name %>
<%= f.input :last_name %>
<%= f.fields_for :instrument do |instrument_f| %>
<%= instrument_f.check_box :do_inst1 %>
<%= instrument_f.check_box :do_inst2 %>
<%= instrument_f.check_box :do_inst3 %>
<%= instrument_f.check_box :do_inst4 %>
<% end %>
<%= f.button :submit, "Register User" %>
<% end %>
Ошибка Msg: Может не массовый Присвоить защищенные атрибуты: инструмент приложение/контроллеры/users_controller.rb: 51: в `новый» линии 51 показан сверху, «# < == ЛИНИЯ, производящего ERROR»
Можете ли вы разместить определение '@ user.build_do_instrument'. – vee
С каким атрибутом у вас возникла проблема? Можете ли вы опубликовать сообщение об ошибке? –
Чтобы сделать его менее запутанным, я изменил «do_instrument» на «инструмент» всего за 1 место. Сожалею. – Jay