grouped_options_for_select に selected を指定したい
grouped_options_for_select
の railsドキュメントにはoptions_for_select
の rails ドキュメントにある
<%= select_tag 'page[name]', options_for_select({"Railsの基礎" => "rails_base", "Rubyの基礎" => "ruby_base"}, :selected => "ruby_base") %>
# <select id="page_name" name="page[name]"><option value="rails_base">Railsの基礎</option>
# <option value="ruby_base">Rubyの基礎</option></select>
のような option に selected を指定するオプションはないようだ。
さてどうしたものか。。。
railsAPI を読んでみると...
ふむふむ、メソッドの引数に selected_key
なるものを option の value を設定することでいけそうだ!
<%= select_tag 'page[name]', grouped_options_for_select([["基礎", [["Railsの基礎", "rails_base"], ["Rubyの基礎", "ruby_base"]]]], 'ruby_base') %>
# <select id="page_name" name="page[name]"><optgroup label="基礎"><option value="rails_base">Railsの基礎</option>
# <option value="ruby_base">Rubyの基礎</option></optgroup></select>
これで 「Rubyの基礎」が selected の状態になる!
できそうだなと思ったら粘り強く調べるべし
実のところ僕自身は rails ドキュメントに記載されていなかった時点でできないものだと思い諦めていたところ, 先輩エンジニアの方が協力してくれて見つけることができた。 options_for_select
では普通に指定できるわけだし grouped_options_for_select
だからできないというのは確かに違和感があった。次からは rails の素晴らしい機能を信じて深く探してみよう。