循环内的表单重复fields_for对象乘以 asc 顺序的循环数



我的新记录表单是为每个循环创建fields_for迭代的副本。

例如:

我在循环中有一个表单,因此对于每个结果,该结果都有一个表单。

有3个结果吗:

第一个结果将具有正确的fields_for对象 第二种形式将有 x2 个fields_for对象(每个对象重复( 第三种形式将有 x3 个fields_for对象(每个对象额外 2 个(

我有一个表单,需要循环通过has_many ... through:关联。

形式:

<%= form_for @shop_product do |f| %>
<% PrintLocation.all.each{|p|@shop_product.shop_product_print_files.build(print_location: p)}  %>
<%= f.fields_for :shop_product_print_files do |ff| %>
<%= ff.object.print_location.title %>
<% end %>
<%= f.submit %>
<% end %>

这将创建print_location对象的x(loop_result(。

创建@shop_product后,此问题就会消失,因为我使用以下表单进行编辑:

<%= form_for shop_product do |f| %>
<% PrintLocation.all.each{|p| shop_product.shop_product_print_files.build(print_location: p) if shop_product.shop_product_print_files.where(print_location: p).empty? } %>
<%= f.fields_for :shop_product_print_files do |ff| %>
<%= ff.object.print_location.title %>
<% end %>
<%= f.submit %>
<% end %>

这消除了任何重复。 我尝试了这个新形式,但没有奏效。 我尝试在PrintLocation.each上使用distinct,但这导致了错误,未定义的方法"不同"。

型:

**shop_product**
has_many :shop_product_print_files
has_many :print_locations, through: :shop_product_print_files
accepts_nested_attributes_for :shop_product_print_files, reject_if: :reject_file, :allow_destroy => true

为什么会出现fields_for对象的重复 x (loop_result.count(,我该如何解决这个问题?

我相信双循环是由于<%= f.fields_for record do |ff| %>中的额外等于.

你能试试这个吗:

<%= form_for shop_product do |f| %>
<% PrintLocation.find_each do |p| %>
<% record = shop_product.shop_product_print_files.where(print_location: p).first_or_initialize %>
<% unless record.persisted? %>
<% f.fields_for record do |ff| %>
<%= ff.object.print_location.title %>
<% end %>
<%= f.submit %>
<% end %>
<% end %>
<% end %>

相关内容

  • 没有找到相关文章

最新更新