2012-01-11 15 views
0

私は10個のフォームフィールドを持っています。各フィールドの隣に1から10の順番で番号を付けたいと思います。問題はコードがすでにループ。それは部分的なものの中にあり、部分的なものはコレクションに渡されます。Ruby on Railsフォームに数字列を作成する方法

<%= fields_for "list", f do |f| %> 
    <!-- I want 1, 2, etc to appear here depending on the iteration. --> 
    <%= f.label :name %> 

私は<%= i += 1 %>を使用してみましたが、iが定義されていないので、それは動作しません。 iを定義すると、同じ番号にリセットされ続けるため、違いはありません。何か案は?

答えて

4

Railsは自動的にpartialname_counterという名前のローカル変数を定義します。明らかに、「partialname」は部分的な名前です。したがって、あなたの部分が例えば、

<%= fields_for "list", f do |f| %> 
    <%= list_item_counter + 1 %> 
    <%= f.label :name %> 
<% end %> 

(カウンターが0から始まるので+ 1は、もちろん、あります。)

だけでブラウザがやらせることであろう別のオプション:_list_item.html.erbあなたはこのようにそれを書くことができますビューで

:あなたが順序付きリストを使用するためのナンバリング

<ol> 
    <%= render :list_item, :collection => @some_items %> 
</ol> 

...と部分的に:

<%= fields_for "list", f do |f| %> 
    <li> 
    <%= f.label :name %> 
    </li> 
<% end %> 

このオプションは、おそらくよりセマンティックで、リストはCSSでスタイルに簡単です。

関連する問題