少なくとも-v3.2.14では、Railsが提供する方法でこれを行う適切な方法がわかりません
@Sheharyar Naseerは、問題を解決するために使用できるオプションハッシュを参照していますが、彼が提案しているように見える方法で見ることができる限りではありません。
私はこれをしました=>
<%= f.fields_for :blog_posts, {:index => 0} do |g| %>
<%= g.label :gallery_sets_id, "Position #{g.options[:index]}" %>
<%= g.select :gallery_sets_id, @posts.collect { |p| [p.title, p.id] } %>
<%# g.options[:index] += 1 %>
<% end %>
また
<%= f.fields_for :blog_posts do |g| %>
<%= g.label :gallery_sets_id, "Position #{g.object_name.match(/(\d+)]/)[1]}" %>
<%= g.select :gallery_sets_id, @posts.collect { |p| [p.title, p.id] } %>
<% end %>
私の場合 、レンダリングされた 3 番目のフィールドに対してg.object_name
このような文字列を返すので、その文字列のインデックスを照合して使用します。"gallery_set[blog_posts_attributes][2]"
実際には、ラムダを渡してそれを呼び出してインクリメントするという、よりクールな (そしてよりクリーンな?) 方法があります。
# /controller.rb
index = 0
@incrementer = -> { index += 1}
そして、ビューの中
<%= f.fields_for :blog_posts do |g| %>
<%= g.label :gallery_sets_id, "Position #{@incrementer.call}" %>
<%= g.select :gallery_sets_id, @posts.collect { |p| [p.title, p.id] } %>
<% end %>