我的表格显示两列,“#”和“字符串”。我已经使每个td的表格通过text_field显示其值,因此用户可以更改值并提交更改。
问题是如何使用表单发送所有值,因为每个td具有相同的id和名称,只发送最后一个td。
如何发送所有td值?
表格:
<%= form_for(@skein) do |s| %>
<table width="100%" class="tablesorter">
<thead>
<tr>
<th width="20%" data-placeholder="Search">#</th>
<th width="80%" data-placeholder="Search">String</th>
</tr>
</thead>
<tbody>
<% @split_order_content.zip(@split_content).each do |number, string| %>
<tr>
<td><%= s.text_field :string_id_bk, :value => number %></td>
<td><%= s.text_field :string_id, :value => string %></td>
</tr>
<% end %>
</tbody>
</table>
<%= s.submit "Save String File", id: "commit", class: "btn btn-lg btn-primary" %>
HTML td呈现:
<td><input value="Ende"" type="text" name="skein[string_id]" id="skein_string_id"></td>
注意名称和ID是如何相同的,导致数据覆盖仅发送最后数据的数据。
该表有数千条记录。我不能将每个td作为属性参数发送,参数应该是一个长数组。
答案 0 :(得分:2)
试试这个
<% @split_order_content.zip(@split_content).each do |number, string| %>
<tr>
<td> <%= text_field_tag 'string_id_bk[]', number %> </td>
<td> <%= text_field_tag 'string_id []', string %> </td>
</tr>
<% end %>
答案 1 :(得分:0)
为文本字段指定唯一ID,如下所示
<% @split_order_content.zip(@split_content).each do |number, string| %>
<tr>
<td><%= s.text_field :string_id_bk, :value => number ,:input_html => { :id => '#{s.id}'+'bk' } %></td>
<td><%= s.text_field :string_id, :value => string ,:input_html => { :id => s.id }%></td>
</tr>
<% end %>
希望能帮到你