gem ransackの導入手順まとめ
インストール
gem 'ransack'
controller
def index
@products = Product.all
end
これを以下に書き換え
def index
@q = Product.ransack(params[:q])
@products = @q.result(distinct: true)
end
view
<h1>プロダクト検索</h1>
<%= search_form_for @q, url: homes_path do |f| %>
<%= f.label :name, 'プロダクト名' %>
<%= f.search_field :name_cont %>
<br>
<%= f.submit '検索' %>
<br>
<%= sort_link(@q, :name, "Name_sort") %>
<% end %>
これだけ!簡単!
疑問点
変数はqじゃないといけないのか?
試しにrでやってみたけどダメだった。
result(distinct: true)
distinctメソッドとは、内部的にはSQLのDISTINCTコマンドを呼び出し、重複レコードを1つにまとめるためのメソッド
url: homes_path
これは検索後に飛ぶページ
_cont
ransackで用意されている検索したワードが含まれているレコードを取得するためのメソッド。
_の前に、検索したいカラム名を入れる。
name_contの場合は、入力されたワードでnameカラムに対してあいまい検索されている。
この部分を変更して、いろいろな形式の検索ができる。
コメント