###ransackを用いた検索機能実装
今回は、現在作成しているSNSアプリでransackを使用して、登録されているユーザーの一覧ページから登録地域で絞り込みをする機能を作成していました。
その中で、色々エラーで躓いたため学習用に投稿しておこうと思います。
###gemのインストール
gem 'ransack'
###コントローラーの変更
class UsersController < ApplicationController
def index
@users = User.paginate(page: params[:page])
@q = User.ransack(params[:q])
@users = @q.result(distinct: true)
@user_prefecture_id = Prefecture.all
end
end
###viewの設定
<%= search_form_for @q do |f| %>
<%= f.label :prefecture_id, "活動地域" %>
<%= f.collection_select :prefecture_id_eq, @user_prefecture_id,:id,:name,include_blank: '地域絞り込み' %>
<%= f.submit %>
<% end %>
###フォームの記述
<%= f.collection_select :検索したいカラム名,実際に表示したい配列データ,:表示する際に参照するDBのカラム名: 実際に表示されるカラム名 %>
フォームの記述は上記のようになっております。
ここで、どのテーブルにどのカラムを紐付けているかを把握していなければ、理解するのに時間がかかると思いす。(実際に自分がそうでした)
###最後に
今回は簡単な検索機能を実施しましたが、DBに保存したデータがうまく取り出せずに、3日ほど詰まっていましたが、無事に解決できました。
初学者の方で私のようなエラーで悩む方の役に立てばと思います。