【rails】検索機能を実装する方法

f:id:ume1017:20200926203200j:plain

 

現在プログラミングスクールに通い

70日間でWEBエンジニアになれるよう勉強中です!

 

本日は検索機能を実装する方法について書きたいと思います!

 

◆ポイント

流れとしては

検索フォームをヘルパーメソッドで検索フォームを実装

フォームから飛ばされた情報を取得する記述をコントローラー

取得した情報をデータベース内で検索する記述を

モデルに記載

 

◆サンプルコード

実際のコードを見ていきたいと思います!

View
 
<%= form_with(url: search_books_path, local: true,
method: :get, class: "search-form") do |form| %>
<%= form.text_field :keyword, placeholder: "投稿を検索する",size: "50",
class: "search-input" %>
<%= form.submit "検索",class: "search-btn" %>
<% end %>

text_fieldの後に記載してる「:keyword」がパラムスとして飛びます!

 

 
Controller
 
def search
@books = Book.search(params[:keyword])
end

パラムスとして指定した「:keyword」を取得し

変数に代入する記述です!!

 

Model
 
def self.search(search)
if search != ""
Book.where('text LIKE(?)', "%#{search}%")
else
Book.all
end
end

search(search)の引数に(:keyword)が渡されます。

そして受け取った値をデータベースで検索します。

 

「text」は検索範囲を指定するカラム名を指定。

LIKE(?)で受け取った値と部分的に合致するデータを検索します。

"%#{search}%"は検索したい値が代入されてます。

 

「else
Book.all」にて検索したい値がデータベース内で

合致しない場合の処理を記述してます。

 

最後にコントローラー内で定義した

検索結果の値が代入されてる変数「@books」を

Viewファイルに記述すれば画面に表示できます!

 

長くなりましたが以上です!