1

私はsimple_formでこの選択をしています:

<%= f.input :theme, :collection => ["#{t('.text_1')}", "#{t('.text_2')}", "#{t('.text_3')}", "#{t('.text_4')}", :value_method => lambda { |n| n } %>

htmlは次のとおりです。

<select class="select required" id="inquiry_theme" name="inquiry[theme]"><option value="">Choose a topic related to your query</option>
<option value="Text1">Text1</option>
<option value="Text2">Text2</option>
<option value="Text3">Text3</option>
<option value="Text4">Text4</option>

テキストの代わりに範囲番号で値を設定したい例:

<select class="select required" id="inquiry_theme" name="inquiry[theme]"><option value="">Choose a topic related to your query</option>
<option value="1">Text1</option>
<option value="2">Text2</option>
<option value="3">Text3</option>
<option value="4">Text4</option>

のラムダで可能:value_methodですか?

ありがとうございました!

4

2 に答える 2

5

あなたの例を考えると、使用value_methodは少しやり過ぎだと思います。

<%= f.input :theme, :collection => [[1, "#{t('.text_1')}"], [2, "#{t('.text_2')}"], [3, "#{t('.text_3')}"], [4, "#{t('.text_4')}"]] %>

私はこれを次のように書きますが

<%= f.input :theme, :collection: (1..4).map { |i| [i, t(".text_#{i}")] }.unshift([nil, 'Choose a topic related to your query'] %>
于 2012-12-04T12:13:55.910 に答える
2

あなたの出力例に基づいて、私はそれがあなたのために役立つかもしれないようにこのように書きます。

<%= f.select :theme,options_for_select((1..4).to_a.map{|x| [x,"Text#{x}"]}.insert(0, "Choose a topic related to your query")) ,:id=>"inquiry_theme" %>
于 2012-12-04T12:19:36.790 に答える