##複数のキーワードの検索機能実装をしておりますが、うまくいかないので投稿いたします。
エラー画面
https://gyazo.com/e80ca01e2c69798bfa7ff250a9f6d6c1
html
1<div class="form-group"> 2 <%= form_with url:search_shops_path, method: :get, local: true do |f| %> 3 <%= f.text_field :name, placeholder:"店舗名を入力" %> 4 <%= f.collection_select :genre_id, Genre.all, :id, :name, :prompt => "料理ジャンルで検索", class:"form-control"%> 5 <%= f.collection_select :pricerange_id, Pricerange.all, :id, :price, :prompt => "平均単価で検索", class:"form-control"%> 6 <%= f.collection_select :address_id, Address.all, :id, :prefectures, :prompt => "地域で検索", class:"form-control"%> 7 <%= submit_tag '検索', :name => nil %> 8 <% end %> 9 </div>
contoller
1def search 2 @shops = Shop.search(params[:name],params[:genre_id],params[:pricerange_id],params[:address_id]) 3 @rate = Post.group(:shop_id).average(:rate) 4 end
model
1 def self.search(name,genre_id,pricerange_id,address_id) 2 if name || genre_id || pricerange_id ||address_id 3 Shop.where(["name LIKE ? OR genre_id ? OR pricerange_id ? OR address_id ?", "%#{name}%","%#{genre_id}%","%#{pricerange_id}%","%#{address_id}%"]) 4 else 5 Shop.all.order(id: "asc") 6 end 7 8 end
フォームにて
params[:name]
params[:genre_id]
params[:pricerange_id]
params[:address_id]
を送る仕様にしており、contollerでその値を取得。
shop.rbに記載した
self.searchメソッドでその値を元に複数検索をかける様に設定したつもりです。
こちらご確認の上、解法を教えていただければと存じます。
よろしくお願いいたします。
あなたの回答
tips
プレビュー