Rails で検索機能を実装
View に form_tag で検索窓を設置
<div class="search_field">
<p>検索:</p>
<%= form_tag(posts_path, :method => 'get') do %>
<%= text_field_tag :search, "", {class: "search_field_type"}%>
<%= submit_tag 'Search', :name => nil, class: "search_field_btn" %>
<% end %>
</div>
form_tag(posts_path, :method => 'get') の path の部分はクラス名によって任意に変更してください。
Model に検索のためのメソッド search を設定
post.rb
def self.search(search)
if search
Post.where(["title LIKE ?", "%#{search}%"])
else
Post.all
end
end
title カラムの中の一部でも検索した文字列が該当すればヒットするように設定。
詳しくは SQL の where 句を調べれば何となく設定している意味わかります。
https://www.wakhok.ac.jp/biblion/1994/DB/subsection2.4.3.5.html
Controller の調整
posts_controller.rb
def index
@posts = Post.all.includes(:user).order(id: "DESC").search(params[:search])
end
これで検索にヒットした記事が @posts に入る。
あとは View 側で一覧表示処理をすれば OK です。