【rails】検索機能を実装する方法
現在プログラミングスクールに通い
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ファイルに記述すれば画面に表示できます!
長くなりましたが以上です!