## やりたいこと
下記のフォームタグでPostテーブルのtitleでの検索と、Genreテーブルのnameの検索を行いたい
rb
1<%=form_tag :search_posts, method: :get, class: "search" do%> 2 <%= text_field_tag "q", params[:q] %> 3 <%= submit_tag "検索"%> 4 <% end %>
下記のクラスメソッドだと片方のテーブルのみ検索してはくれるのですが、両方のテーブルに対しては行ってくれません。||は違うとはわかっているのですが、ニュアンス的にPostテーブルもしくはGenreテーブルという感じを表現したくて書きました。ちなみに||を取るとPost.joins(:genres).where('genres.name LIKE?', "%#{query}%")
が反応し、Genreを検索してくれます
post.rb
rb
1class << self 2 def search(query) 3 if query.present? 4 Post.where(["title LIKE ?", "%#{query}%"]) || Post.joins(:genres).where('genres.name LIKE?', "%#{query}%") 5 6 else 7 Post.all 8 end 9 end 10 end
前提
Postモデル
Genreモデル
Manageモデル(中間モデル)
rb
1 def search 2 params[:q] 3 @posts = Post.search(params[:q]) 4 render "index" 5 end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/25 03:42