Rails Ransackを用いて一覧画面に検索機能を追加しよう!
はじめに
Railsを開発していて一覧画面に検索機能を付けたいということがあると思います。
Ransackを用いると簡単に実装できるので実装手順を書いていこうと思います。
前提条件としてDBにnameカラムのようなものがあるといいですね。
Ransackのインストール
Gemfile
gem 'ransack'
=>bundle
gem 'ransack'
=>bundle
Railsサーバを起動したままであれば一度このタイミングで再起動しておきましょう。
ransackをインストールすると、検索を行うためのransackメソッドがモデルに追加されます。
名称による検索
tasks_controller.rb
def index
@q = current_user.tasks.ransack(params[:q])
@tasks = @q.result(distinct: true)
end
def index
@q = current_user.tasks.ransack(params[:q])
@tasks = @q.result(distinct: true)
end
続いて、タスク一覧画面に検索フォームを実装します
= search_form_for @q,class: 'mb-5' do |f|
.form-group.row
= f.label :name_cont, '名称', class: 'col-sm-2 col-form-label'
.col-sm-10
= f.search_field :name_cont, class: 'form-control'
ransackを利用する際は、検索フィールドの名前を一定のルールで命名します。
ここでは「名称に〇〇を含む」という検索を実現したいため、ビュー内の名称フィールドを「name_cont」としています。
最後に
名称だけでなく登録日時による検索もできるのでransackは便利ですね!
Author And Source
この問題について(Rails Ransackを用いて一覧画面に検索機能を追加しよう!), 我々は、より多くの情報をここで見つけました https://qiita.com/nao_109/items/2e9328c00078e3322410著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .