2016-05-24 2 views
0

У меня проблема при редактировании вложенной модели. Когда я выполню приведенный ниже код, создайте еще одну запись в моей таблице WeeklySchedule.Редактировать вложенные атрибуты

Пример: Я хочу заменить 9-10 в понедельник.

WeeklySchedule стол:

Перед редактирования:

weekly_schedule_id: 1 monday: 9 

После редактирования:

weekly_schedule_id: 1 monday: 9 
weekly_schedule_id: 2 monday: 10 

Код:

Модели:

class Installation < ActiveRecord::Base 
    accepts_nested_attributes_for :weekly_schedule 
    belongs_to :weekly_schedule 
end 

class WeeklySchedule < ActiveRecord::Base 
    has_one :installation 
end 

Форма:

<%= simple_form_for @installation, class: 'form-horizontal' do |f| %> 
     <%= f.simple_fields_for :weekly_schedule do |w| %> 
     <%= w.time_field :monday %> 
     <% end %> 
<% end %> 

Контроллер:

def update 
@installation.update(installation_params) 
(...) 
end 

def edit 
@installation = current_user.installations.find_by(:installation_id => params[:id]) 
end 

installation_params:

{"x"=>"20", 
"y"=>"21", 
"weekly_schedule_attributes"=>{"monday"=>"10"}} 

Что я делаю неправильно?

+1

Можете ли вы показать весь свой метод обновления в контроллере –

+0

Также 'installation_params' метод – Vasfed

+0

также показать свой' метод edit' от контроллера. (Я предполагаю, что вы попали в эту форму, нажав кнопку «Изменить» и проложив путь по методу 'edit'.) – lurker

ответ

1

Это происходит, когда вам не хватает :id в сильных параметрах для вложенной модели. Убедитесь, что ваш installation_params включает :id как следующее:

def installation_params 
    params.require(:installation).permit(..., :weekly_schedule_attributes => [:id, :monday, ...]) 
end 
Смежные вопросы