実装すること
投稿(Item)のタイトル(title)の検索
モデルの作成
$ rails g model Item title:string
$ rails db:migrate
ルーティングの作成
config/routes.rb
Rails.application.routes.draw do
get "search" => "items#search", as: 'search'
end
Itemコントローラーの作成・編集
$ rails g controller items
app/controllers/items_controller.rb
class ItemsController < ApplicationController
def search
#itemのtitleを曖昧検索
@items = Item.where('items.title LIKE(?)', "%#{params[:search]}%").order(created_at: :desc)
#フォームに入力した内容を取ってくる
@search_result = "#{params[:search]}"
end
end
ビューの編集
投稿一覧
検索フォームはパーシャルにします。
app/views/items/index.html
<div class="search">
<%= render 'items/search_form' %>
</div>
検索フォーム
app/views/items/_search_form.html
<%= form_tag(users_search_path, :method => 'get') do %>
<%= text_field_tag :search, params[:search], class: "form-control", id: "search_area", placeholder: "タイトルを入力"%>
<%= submit_tag '検索' %>
<% end %>
検索結果
app/views/items/search.html
<h2>タイトル"<%= @search_result %>"の検索結果(<%= @items.count %>件)</h2>
<% @items.each do |item| %>
<%= item.title %>
<% end %>
最後に
最後までご覧いただきありがとうございます。
初学者ですので間違っていたり、分かりづらい部分もあるかと思います。
何かお気付きの点がございましたら、お気軽にコメントいただけると幸いです。
参考
gemを使わずに検索機能を作ろう!複数テーブルの検索にも対応可能!
https://qiita.com/chain_saw_man/items/07faf8fed3224c1dccfb
Ruby on Rails 検索機能拡張 (railsチュートリアル)
https://qiita.com/mochikichi321/items/5c9630c5d87b47130942