実現したいこと
一覧画面にて、このようなチェックボックスによるフィルタ機能を作っています。
チェックボックスにチェックを入れると、画面に表示される作品(works)が絞り込まれます。
作成したコード
ajaxで実装することも考えましたが、まずはページ遷移を伴う実装にて実現したいと思っています。
view
1= form_with url: works_path, local: true, method: :get do 2 - @categories.each do |cat| 3 = check_box_tag "category_#{cat.id}", value = cat.id, checked = false, options = {id: "category_#{cat.id}", onchange: "submit(this.form);"} 4 = label_tag "category_#{cat.id}", cat.name
check_box_tagの"category_#{cat.id}"
はlabel_tagのそれと対応しています。
controller
1def index 2 @works = params.include?("category_") ? Category.find(params[:category_id]).works : Work.all 3end
paramaters
1=> <ActionController::Parameters {"utf8"=>"✓", "category_3"=>"3", "controller"=>"works", "action"=>"index"} permitted: false>
課題
- コントローラーの
params.include?("category_")
がfalseになる params.match(/category_?/)
とparams.grep(/category_?/)
はNonmethod errorがでる
解決したいこと
そもそも、ビューの書き方に自信がなく、ビューを改修して課題が解決できるならそれでも良いと考えています。
like句なども調べてはみましたが、paramsのkeyの方で曖昧な検索をする方法がわかりませんでした。
お分かりになる方、教えていただけますと幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/08 14:12
2020/03/08 14:16
2020/03/08 21:14
2020/03/10 22:44