5

我需要在 simple_fields_for 块内进行迭代,以将数字 [0 到 6] 分配给 :day 字段。

控制器

7.times { @doctor.schedules.build }

看法

<tr>
    <% @i = 0 %>
    <%= f.simple_fields_for :schedules do |builder| %>
    <td>
    <%= builder.input :day, value: @y, wrapper: :check  %>
    <%= builder.input :is_available, as: :boolean, label: false, wrapper: :check %>
    <% @i += 1 %>
    </td>
<% end %>
</tr>

显然这将从 1 到 7 开始,我怎样才能让它从 0 迭代到 6?

4

2 回答 2

13

JFYI,您将能够在 Rails 4 中获取当前索引。请参阅合并的拉取请求

现在你可以使用这样的东西:

<% @doctor.schedules.each_with_index do |schedule, index| %>
  <%= f.simple_fields_for :schedules, schedule do |ff| %>
    <%= ff.input :day, value: index %>
  <% end %>
<% end %>
于 2013-01-23T21:39:24.850 回答
4

如前所述,合并https://github.com/rails/rails/pull/5746后在 Rails 4 中是可能的。在 Rails 4 中,您可以.index在“构建器”上使用:

<%= f.simple_fields_for :schedules do |builder| %>
  <%= builder.input :day, value: builder.index+1 %>
<% end %>
于 2014-10-23T08:42:06.080 回答