talk is cheap. 新建时候的代码:
<tbody>
<% @tickets.each do |t| %>
<%= f.fields_for :channel_tickets do |cf| %>
<tr id="first_tr">
<td>
<%= cf.check_box :ticket_id, {}, t.id %>
<%= t.id%>
</td>
<td><%= t.name %></td>
<td>
渠道价:<%= cf.text_field :channel_price %>
最低售价:<%= cf.text_field :lowest_online_price %>
</td>
<td>
<%= cf.select :pay_method, %w"现付 充值 授信".collect{|c| [c,c]}, include_blank: true %>
</td>
</tr>
<% end %>
<% end %>
</tbody>
效果是: 我选择了三种票中的两个。 但是在 edit 的时候成了这样: 代码:
<tbody>
<% @tickets.each do |t| %>
<%= f.fields_for :channel_tickets do |cf| %>
<tr id="first_tr">
<td>
<%= cf.check_box :ticket_id %>
<%= t.id%>
</td>
<td><%= t.name %></td>
<td>
渠道价:<%= cf.text_field :channel_price %>
最低售价:<%= cf.text_field :lowest_online_price %>
</td>
<td>
<%= cf.select :pay_method, %w"现付 充值 授信".collect{|c| [c,c]}, include_blank: true %>
</td>
</tr>
<% end %>
<% end %>
</tbody>
原因是两个循环分别循环造成的。 我是想在编辑的时候不仅可以编辑选中的,新建的时候没选中也要显示。这是第一个问题。 退一步,我想去掉@tickets循环,只显示选中的结果,页会多出来空白行,且不能正确填充值。这是第二个问题。 有经验的希望能指点 一二。