我有一个嵌入供应商的简单出价模型:
class Bid
include Mongoid::Document
field :amount, type: Integer
embeds_one :supplier
accepts_nested_attributes_for :supplier
end
许多出价都有相同的供应商。如果我使用的是脚手架编辑视图,我将如何在更新方法中更新嵌入式供应商的所有出价实例?
我尝试过像
那样的失败def update
@supplier.update(supplier_params)
#or
#bids = Bid.where('supplier._id' => @supplier.id)
#bids.supplier.update_attributes!(supplier_params)
redirect_to @supplier
end
答案 0 :(得分:2)
由于您使用的是nested attributes,因此您应该能够通过传递supplier_attributes
来更新嵌套记录。
Bid.find(1).update(supplier_attributes: { foo: 'bar' } )
要将嵌套参数列入白名单,请使用哈希选项:
params.require(:bid).permit(supplier_attributes: [:foo])
要生成表单字段,请使用fields_for
:
<%= form_for(@bid) do |f| %>
<%= f.fields_for(:supplier) do |s| %>
<%= s.label :foo do %>
<%= s.text_field :foo %>
<% end %>
<% end %>
<% end %>