কমপক্ষে -v3.2.14-এ নয়, রেলগুলির সরবরাহিত উপায়গুলির মাধ্যমে এটি করার জন্য আমি একটি শালীন উপায় দেখতে পাচ্ছি না
@ শেহেরিয়ার নাসির বিকল্পগুলির হ্যাশগুলির বিষয়ে উল্লেখ করেছেন যা সমস্যার সমাধান করতে ব্যবহার করা যেতে পারে তবে তার পরামর্শ মতো মনে হচ্ছে আমি যতটা দেখতে পাচ্ছি না।
আমি এটি => করেছি
<%= 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] } %>
<%
<% 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 %>
আমার ক্ষেত্রে তৃতীয় ক্ষেত্রের জন্য রেন্ডার করা g.object_name
এই জাতীয় একটি স্ট্রিং "gallery_set[blog_posts_attributes][2]"
প্রদান করে তাই আমি কেবল সেই স্ট্রিংয়ের সূচকটি মেলে এবং এটি ব্যবহার করি।
আসলে একটি কুলার (এবং সম্ভবত ক্লিনার?) এটি করার উপায় হ'ল ল্যাম্বদা পাস করা এবং এটিকে ইনক্রিমেন্টে কল করা।
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 %>