我有一个名为Offer
的模型,另一个名为PurchasinGroup
Offer
有很多PurchasingGroups
Offer
接受PurchasingGroups
创建优惠时,您可以根据需要添加任意数量的采购组。
PurchasingGroup
有一个名为active
的布尔属性。
在编辑Offer
时,您可以看到所有已创建的采购组,但我想让用户只编辑处于活动状态的采购组,并且不显示不活动的采购组。
这是edit
中的offers_controller.rb
操作:
def edit
@offer = Offer.find(params[:id])
end
这是我的表格(只有重要部分):
<fieldset>
<legend>Purchasing groups</legend>
<%= f.fields_for :purchasing_groups do |builder| %>
<%= render partial: 'purchasing_group_fields', locals: { f: builder } %>
<% end %>
</fieldset>
在编辑表单中,所有采购组都会显示进行编辑,我只想显示那些处于活跃状态的采购组我的意思是purchasing_group.active == true
最好的方法是什么?
答案 0 :(得分:4)
<%= f.fields_for :purchasing_groups, @offer.purchasing_groups.where(active: true) do |builder| %>
<%= render partial: 'purchasing_group_fields', locals: { f: builder } %>
<% end %>
另一方面,您还可以在模型中添加关联
class Offer
has_many :active_purchasing_groups, class_name: "PurchasinGroup", -> { where(active:true) }
...
end
然后
<%= f.fields_for :active_purchasing_groups do |builder| %>
<%= render partial: 'purchasing_group_fields', locals: { f: builder } %>
<% end %>