2013-01-22 46 views
4

我需要在simple_fields_for块内迭代,以将数字[0至6]分配给:day字段。如何迭代simple_fields_for?

控制器

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?

+0

假设@y应该是@i,这似乎应该循环0-6,因为它是。 – Geoff

回答

3

就像提到有可能在合并后的Rails 4 https://github.com/rails/rails/pull/5746。 在Rails 4,你可以在“建设者”使用.index

<%= f.simple_fields_for :schedules do |builder| %> 
    <%= builder.input :day, value: builder.index+1 %> 
<% end %> 
13

JFYI,你就可以得到当前索引中的Rails 4.看this合并拉请求

现在你可以使用这样的事情:

<% @doctor.schedules.each_with_index do |schedule, index| %> 
    <%= f.simple_fields_for :schedules, schedule do |ff| %> 
    <%= ff.input :day, value: index %> 
    <% end %> 
<% end %>