2013-01-22 40 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 %>