7

フォームにフォーム選択(ドロップダウンリスト)があるレールアプリがあります。たとえば、ユーザーは 1、2、3、4、5 から選択できます。

たとえば、これらの値を次のようなインスタンス変数として配列に格納したとします。

@formlist = [1,2,3,4,5]

各項目を個別にリストするのではなく、配列をフォーム選択ヘルパーに単純に入れるにはどうすればよいですか。現時点で私のコードは次のとおりです。

<tr>
  <th><%= f.label(:heat_level, "Heat Level") %></th>
  <td><%= f.select(:heat_level,{ 1 => "1", 2 => "2", 3 => "3", 4 => "4", 5 => "5"}) %></td>
</tr>
4

1 に答える 1

18

これはうまくいくはずです:

f.select(:heat_level, @formlist.map { |value| [ value, value ] })

いくつかの説明:

formselectは、ハッシュのようなオプション リストと配列のようなオプション リストの両方を処理できます。つまり、両方 { 1 => "1", 2 => "2", 3 => "3", 4 => "4", 5 => "5"}

[[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]]

動作します。

@formlist.map { |value| [ value, value ] }後者を行います

于 2012-11-20T15:01:21.060 に答える