编辑嵌套属性

时间:2016-05-24 16:19:04

标签: ruby-on-rails ruby nested-attributes

编辑嵌套模型时遇到问题。当我执行下面的代码时,在我的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 :(得分:2)

当您在嵌套模型的强参数中缺少:id时会发生这种情况。确保您的installation_params包含:id,如下所示:

def installation_params
  params.require(:installation).permit(..., :weekly_schedule_attributes => [:id, :monday, ...])
end