3

送信時に選択オプションが記憶されないという奇妙な問題が発生しています (そして、検証が失敗し、フォームが再読み込みされます)。

これが私のコードです

<%= form.select :state, options_for_select(us_states), :include_blank => true %>

us_states の外観の一部を次に示します。

  def us_states
      [
        ['Alabama', 'AL'],
        ['Alaska', 'AK'],

何を選択しても、常に選択ボックスに空白のオプションが表示されます。:include_blank をまったく使用しない場合、常にアラバマのみが表示されます。つまり、最初のフィールドを表示しているだけです。

4

3 に答える 3

4

options_for_selectヘルパーに引数として渡すことで、選択した値を指定します。

<%= form.select :state, options_for_select(us_states, form.object.state), :include_blank => true %>

ドキュメンテーションはこちら

于 2012-05-31T21:11:02.373 に答える
1

私がしなければならなかったことは、2 番目の引数を options_for_select に渡すことだけでした。だから私はこれを機能させました

options_for_select(us_states, @user.state)

于 2012-05-31T23:09:57.590 に答える
0

わかりました、私の番です。

例を挙げて、アプリケーションでそれをどのように使用するかを説明します

以下のコードは、選択ボックスを形成します。

<%= select("product", "id",options_for_select(MobilesLists.get_colors(mobile.mobile_name))) %>

MobilesLists.get_colors の結果は次のとおりです。

ruby-1.9.2-p290 :011 > MobilesLists.get_colors("Samsung Galaxy Y S5360")

=> [["black", 3], ["bubblegum pink", 5], ["fruity orange", 4], ["metallic grey", 1], ["silver platter", 6], ["white", 2]] 

配列の配列を返します。だから、今はこうなります。

 <%= select("product", "id",options_for_select([["black", 3], ["bubblegum pink", 5], ["fruity orange", 4], ["metallic grey", 1], ["silver platter", 6], ["white", 2]])) %>

上記の例は、次の HTML を生成します。

<select id="product_id" name="product[id]"><option value="3">black</option>
<option value="5">bubblegum pink</option>
<option value="4">fruity orange</option>

<option value="1">metallic grey</option>
<option value="6">silver platter</option>
<option value="2">white</option></select>

さて、私のコントローラーでは、次のように値にアクセスします。

if !params[:product][:id].nil?

  @product_id = params[:product][:id].to_i

end

それだけです!, ありがとう!

于 2012-05-31T22:10:13.200 に答える