1. ホーム
  2. ruby-on-rails

[解決済み] select_tag/options_from_collection_for_select で selected を設定する方法

2022-03-04 22:02:25

質問

2時間ほど前からstackoverflowで同じような質問を検索しているのですが、回答がうまくいきません。

私は以下のようなコードを持っています。

<%= select_tag "name_dropdown", options_from_collection_for_select(@models, "friendly_id", "name") %>

デフォルトで最初のタグに行くのではなく、前に選んだ選択肢をselectedとして表示したいのですが。

他の質問では、以下のように追加することを提案されています(どれもうまくいきません)。

<%= select_tag "name_dropdown", options_from_collection_for_select(@models, "friendly_id", "name", "1") %>

または

<%= select_tag "name_dropdown", options_from_collection_for_select(@models, "friendly_id", "name", @models.first.id) %>

ps. Rails 3.1.RC4を使っています

解決方法は?

を想定し、それに加えて @models は、完全なリストを含んでおり、さらに @model で、現在のレコードが含まれていれば、次のようになります。

<%= 
  select_tag "name_dropdown", 
  options_from_collection_for_select(@models, "friendly_id", "name", @model.id) 
%>

基本的に、4番目のパラメータである options_from_collection_for_select(...) には、選択させたいアイテムのidを指定します。2つ目のサンプルではselectedのidが毎回1になるように強制され、3つ目のサンプルでは常に @models 実際に現在選択されているモデルに関係なく、選択されます。