我有一个循环,它遍历一个对象数组,为每个对象创建一个表单。
%h4
- @build.tables.where(build: @build, style: "raw").each do |table|
= form_for :table, :url => table_global_timestamp_path(table), :method => :post, :html => { :class => ""}, authenticity_token: true, remote: true do |f|
.row.puffer
.col-lg-12
= f.label :global_timestamp, "Choose Timestamp for #{table.collection_document_group}"
.col-lg-8
- global_timestamps = table.target_collection.data_types.map{ |key, value| key if value == "TimeStamp" && table.doc_group_columns.keys.include?(key) }.compact rescue []
= f.select(:global_timestamp, global_timestamps, :selected => table.global_timestamp, :include_blank => true, :class => "input-highlight")
.col-lg-4
= f.submit "Save", :class => "btn btn-primary form-control"
无论我迭代的数组的长度如何,第一次迭代似乎都不起作用。所有其他迭代都按预期创建表单。如果我的数组中有3个对象,我的html看起来像这样
%h4
<div class="row puffer">
<form></form>
<form></form>
所以它成功创建了除第一个之外的所有表单。提前致谢
答案 0 :(得分:0)
将代码的第一部分更改为
= form_for table...
作为变量而不是:symbol
。
同样根据我的评论,您不需要build: @build
,这是通过@build.tables
确定范围的重点
- @build.tables.where(style: "raw").each do |table|
= form_for table, :url => table_global_timestamp_path(table), :method => :post, :html => { :class => ""}, authenticity_token: true, remote: true do |f|