0

1からアクティブレコードで定義された番号までの選択ボックスを作成する必要があります。この番号は変更されます。

これまでのところ、次のような選択ボックスを作成できることはわかっています。

<%= f.select  :numbers, %w[1 2 3 4 5 6 7 8 9 10 ] %>

しかし、私が必要としているのは次のようなものです。

<%= f.select  :numbers, %w[1..@user.number] %>

Railsで動的な選択ボックスを作成する方法はありますか?それとも、forループなどを使用してHTMLで選択タグを手動で作成する必要がありますか?

ありがとう

4

1 に答える 1

1

次の方法を使用して、範囲を配列に変換できます。to_a

<%= f.select :numbers, (1 .. @user.number).to_a %>

またはf.select、生の範囲を渡すことができ、それはあなたを要求to_aします:

<%= f.select :numbers, 1 .. @user.number %>

細かいマニュアルから:

select(object、method、choices、options = {}、html_options = {})

提供されたオブジェクトとメソッドに対して、selectタグと一連の含まれるオプションタグを作成します。オブジェクトが使用可能であれば、オブジェクトが現在保持しているオプションが選択されます。

他のヘルパーの出力に対応して、choicesパラメーターには2つの可能な形式があります。

  • フラットコレクション:を参照してくださいoptions_for_select
  • ネストされたコレクション:を参照してくださいgrouped_options_for_select

そしてoptions_for_select言う

options_for_select(container、selected = nil)

コンテナ(ハッシュ、配列、列挙可能、タイプ)を受け入れ、オプションタグの文字列を返します。

Rangeは列挙可能であるため、f.select上記の両方の呼び出しで同じ結果が得られるはずです。

于 2012-08-19T02:31:01.803 に答える