![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Rails コンボボックスの値の保持について(select_tag,collection_select)
こんにちは。
Ruby on Railsで簡単な一覧検索画面を作成中の者です。
検索時の検索条件にコンボボックスを使用しており、検索後にコンボボックスの値を保持したいのですが、どうしてもできません。
どなたかお分かりの方がおられましたらご教授いただけないでしょうか。
下記、作成中のソースです。
Viewの検索条件部
<%- form_tag({:action => "search"},{:method=> "GET"}) do -%>
<th class="U" align="left" width="10%"><label for="userNm">ユーザー名</label></th>
<td width="90%"><%= text_field_tag :userNm, @userNm %></td>
<th class="U" align="left" width="10%"><label for="authCd">社員権限</label></th>
<td width="90%">
<%= collection_select(:auth, :authCd, Auth.find(:all, :order => "AUTH_CD"), :id, :AUTH_NM, :include_blank => true) %>
<td align="center"><%= submit_tag '検索' %></td>
Controllerクラス:
def search
#画面パラメータから検索条件を作成
c = Condition.new
# ユーザー名
userNm = ""
if params[:userNm]
userNm = params[:userNm]
c.and "USER_NM", "LIKE", "%#{userNm}%"
end
# コンボボックスの値を取得
if params[:auth] && !params[:auth]["authCd"].blank?
c.and "AUTH_CD", params[:auth]["authCd"]
end
# 検索処理
@users = User.paginate(:order => "USER_ID asc",
:per_page => 5,
:page => params[:page],
:conditions => c.where)
# 検索条件保持
@userNm = params[:userNm]
# コンボボックスの値が保持できない
if params[:auth]
@auth_authCd = params[:auth]["authCd"]
end
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @users }
end
end
見づらくて申し訳ありませんが、ざっと上記のようになっています。
もう1つの検索条件であるユーザー名(userNm)は保持できるのですが、コンボボックス(社員権限)の値が保持できません。
select_tagや、selectも使ってみたのですが、どちらも同じ結果でした。
コンボボックスの条件は、Authモデルから値を読込み、一番上は空白にする。というものです。
どのように記述すれば保持できるのか色々調べてみたのですが、結局分からず仕舞いでした。。
どうぞ宜しくお願い致します。
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"] || '') : '')
ソース見た感じだとこんな感じでどうでしょう。
ご回答ありがとうございます。
教えていただいた内容を参考に修正してみたところ、うまく動作できるようになりました!
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Ruby No route matches [GET] "/posts/5/destroy" 1 2022/03/24 13:00
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1、Rstudioで回帰直線を求める...
-
パソコンのスクリーンセーバー...
-
C言語の入力した文字を反転させ...
-
教えてください
-
英数字を含む文字列(0-9,A-Z)...
-
7セグメント LED ディスプレイ ...
-
100万件越えCSVから条件を満た...
-
プログラミング
-
Excel関数と条件付き書式:製造...
-
(再質問)エクセルのマクロボ...
-
EXCEL 和暦入力
-
三項でたとえば交換って
-
なんで if __name__ == "__main__"
-
ビーリアルのユーザー名を変え...
-
pythonエラー
-
二進数で、1000 0000は、
-
【メモリ不足で落ちる(python)】
-
MacBookAir起動時にRubyソース...
-
PysimpleGUIでデータベースを作る
-
IDLE.Shell 3.10.0
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
windows embdded standard7
-
10円未満を切り捨てる方法は?
-
rails3初心者 金額から絞り込み...
-
Rails コンボボックスの値の保...
-
pythonのerrorコード
-
No route matches [GET] "/post...
-
パイソンのクラス
-
get() と find() の違いについて
-
Rubyについて質問です
-
ぱいソン
-
「arg」は何の略?
-
エクセルVBA オートフィルタで...
-
VBAで型が一致しないエラー(バ...
-
教えてください。vb5.0
-
クラス名やモジュール名の競合...
-
What class are you in? には何...
-
エラー「メソッドまたはデータ...
-
A1の値をファイル名に指定した...
-
実行時エラー450:引数の数が一...
-
HSTLやSSTL等のI/Oピン
おすすめ情報