5

grouped_collection_select関数を使用して通常のselectビューヘルパーで使用する:selectedオプションを何らかの方法で使用することは可能ですか?リストで事前に選択されている値を設定したいのですが。運が悪かったオプションとして:selectedを渡してみました!

これが私のテストのいくつかのコードの抜粋です:

grouped_collection_select 'user[subscription_attributes]', :subscription_plan_id, Trade.order(:name).all, :subscription_plans, :name, :id, :display_name, { :include_blank => true, :selected => 5 }

grouped_collection_select 'user[subscription_attributes]', :subscription_plan_id, Trade.order(:name).all, :subscription_plans, :name, :id, :display_name, :include_blank => true, :selected => 5 

どちらのバージョンも機能しません。選択なしが設定されています。これを使用して、ネストされたモデルの値を設定しています。railscasts動的選択リストメソッドを使用しています:http://railscasts.com/episodes/88-dynamic-select-menus-revised

グループ選択でうまく遊ぶことができなかったので、手作業で行う必要がありましたが、ユーザーが検証に失敗したときにこの値を選択したままにしません。検証エラーが修正されたときに、このセットを保持したいと思います。

4

3 に答える 3

9

同じ問題に遭遇し、 http: //api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.htmloption_groups_from_collection_for_select helperに記載されているselectヘルパーを使用して解決しました。

最初のステップは、グループ化されたオプションを作成することです。例をとると、次のようになります。

<% options = option_groups_from_collection_for_select(Trade.order(:name).all,
   :subscription_plans, :name, :id, :display_name, 5) %>

次に、次のような選択オブジェクトを作成しました。

<%= select('user[subscription_attributes]', :subscription_plan_id, options, 
  include_blank: true) %>

すべてを1行で書き出すことができます。オプションを別の変数に分割して、2つの異なる方法を説明します。

于 2013-01-28T20:31:35.717 に答える
1

手遅れかもしれませんが、grouped_collection_selectのAPIドキュメントには次のように記載されています。'インスタンスオブジェクトのメソッドの呼び出しから返された値が選択されます。'

したがって、Railsは属性の現在の値に基づいて自動的に選択するため、:selectedオプションを指定する必要はありません。Subscription_plan_idの値が5の場合、それが選択されます。

これがデフォルト値であると想定される場合は、モデルでafter_initializeを使用して設定できます。

于 2013-11-22T15:27:34.063 に答える
0

実際には、たとえば、オプションinclude_blankを送信する必要があります

<%= grouped_collection_select :id, model.all, options = {:include_blank => 'Selecione'}%>
于 2016-04-14T20:20:44.170 に答える