実現したいこと
結論のみ書くと、クエリ文字列のキーを指定されたものに変更したいです。
前提として、movieテーブルの中にname, description, is_showing(公開されているか)カラムがあり、indexアクションによってそれらを一覧を表示している状態です。
Ransack gemを使用して、検索フォームによりnameまたはdescriptionに含まれる文字を検索できるようにしました。また、ラジオボタンによって全てのmovies、公開されているmovies(is_showing=true)、公開されていないmovies(is_showing=false)を検索できるようにしています。また検索フォームとラジオボタンの併用もできるようにしています。
現在の状況としては、検索フォーム、ラジオボタンどちらも想定通りの動きをしておりますが、現在取り組んでいる課題のクリア条件を満たせておりません。
検索フォームを使って検索した場合、クエリ文字列が「q%5Bname_or_description_cont%5D=aaa&q%5Bis_showing_eq%5D=&commit=検索」となるため、前半の「q%5Bname_or_description_cont%5D=aaa」の部分を「keyword=aaa」となるように変更したいです。
発生している問題
エラーは発生しておりません。
該当のコード
ruby:routes.rb
1Rails.application.routes.draw do 2 get '/movies', to: 'movies#index' 3 get '/search', to: 'movies#search' 4 namespace :admin do 5 resources :movies, only: [:index, :new, :create, :edit, :update, :destroy] 6 end 7end
ruby:movies_controller.rb
1class MoviesController < ApplicationController 2 before_action :set_q, only: [:index, :search] 3 def index 4 @movies = Movie.all 5 end 6 7 def search 8 @results = @q.result 9 end 10 11 private 12 13 def set_q 14 @q = Movie.ransack(params[:q]) 15 end 16end
ruby:index.html.erb
1<h1>映画一覧</h1> 2 3<h2>映画検索</h2> 4<%= search_form_for @q, url: search_path do |f| %> 5 <%= f.search_field :name_or_description_cont %> 6 <%= f.radio_button :is_showing_eq, '', {:checked => true} %>全て 7 <%= f.radio_button :is_showing_eq, true %>上映中 8 <%= f.radio_button :is_showing_eq, false %>上映予定 9 <%= f.submit '検索' %> 10<% end %> 11 12<div class="movie_box"> 13 <% @movies.each do |movie| %> 14 <ul class="movie_item"> 15 <%= image_tag movie.image_url, size: '280x280' %> 16 <li><%= movie.name %></li> 17 <li><%= movie.year %></li> 18 <li><%= movie.description %></li> 19 </ul> 20 <% end %> 21</div>
試したこと
1つ目:
search_fieldメソッド内のsear:name_or_description_contという条件を使ってnameまたはdescriptionに検索フォームで入力した文字列がないか探していいますが、この:name_or_description_contという名前をkeywordに変更できないか、下記railsガイドで調べましたが、できそうにないと判断しました。
https://railsdoc.com/page/search_field
2つ目:
「rails クエリ文字列 変更」、「rails クエリ文字列 指定」など検索をしてみましたが、特に今回の件について解決できそうな記事は見当たりませんでした。
補足情報(FW/ツールのバージョンなど)
OS:macOS Big Sur Version 11.4
Rails: 6.1.3.2
ruby: 2.7.3
基礎的な内容だとは思いますが、数日間この問題で行き詰まってしまっております。
回答やヒント、アドバイス等いただけましたら幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー