初めに
今回は実際にindexのページに検索機能を搭載していきたいと思います。
routes.rbにsearchを設定
routes.rb
get 'searches' => 'courses#search'
controllerに追加
app/controllers/courses_controller.rb
def search
@courses = Course.search(params[:keyword])
@keyword = params[:keyword]
render "index"
end
viewページに実際に記述
app/views/courses/index.html
<div class="container mt-5">
<div class="row">
<%= form_with url: searches_path, method: :get, local: true do |f| %>
<%= f.text_field :keyword, value: @keyword %>
<%= f.submit "検索" %>
<% end %>
</div>
</div>
モデルに記述
course.rb
def self.search(keyword)
where(["title like? OR body like? OR address like?", "%#{keyword}%", "%#{keyword}%", "%#{keyword}%"])
end
titleやbodyやaddressのように検索にヒットさせたいカラムをそれぞれ追加してあげる事で複数検索出来ると思います。
これで検索機能の実装は出来ると思います。