• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Rails コンボボックスの値の保持について(select_tag,c)

Railsコンボボックスの値の保持方法とは?

このQ&Aのポイント
  • Ruby on Railsで一覧検索画面を作成中。検索条件にコンボボックスを使用しており、検索後に値を保持したいができない。
  • コンボボックスの条件はAuthモデルから値を読込み、一番上は空白にする。
  • select_tagやselectを試したが、どちらも同じ結果。コンボボックスの値が保持できない。

質問者が選んだベストアンサー

  • ベストアンサー
  • sumisyu
  • ベストアンサー率100% (1/1)
回答No.1

オプションのselectedにid値と一致する値をセットすると反映するので <%= collection_select(:auth, :authCd, Auth.find(:all, :order => "AUTH_CD"), :id, :AUTH_NM, :include_blank => true) %> を <%= collection_select(:auth, :authCd, Auth.find(:all, :order => "AUTH_CD"), :id, :AUTH_NM, {:selected => @auth_authCd.to_i, :include_blank => true } ) %> Controllerで@auth_authCdが宣言されないとViewでエラーが起きるので if params[:auth] @auth_authCd = params[:auth]["authCd"] end を @auth_authCd = (params[:auth].present? ? (params[:auth]["authCd"] || '') : '') ソース見た感じだとこんな感じでどうでしょう。

moyashi_1
質問者

お礼

ご回答ありがとうございます。 教えていただいた内容を参考に修正してみたところ、うまく動作できるようになりました! collection_selectだと、:selected がうまく動作しないらしく、下記のようにselectを使用したら値を保持できました。 <%= select(:auth, :authCd, Auth.find(:all, :order => "AUTH_CD").collect  {|p| [ p.AUTH_NM, p.id ] }, :selected => @auth_authCd.to_i, :include_blank =>   true ) %> 大変勉強になりました。 ありがとうございました!

関連するQ&A