ransack で scope を使用して link_to で表示する方法
- POST
方法 ransackable_scopes メソッドを使用して実現する
環境 ruby: 2.7.6 rails: 5.2.8.1 実際のコード 例. User モデルの created_at カラムを基準として N 以内に作成されたユーザを取得する
[model]
# 引数なし scope :within_one_month, -> { where('created_at >=', Time.zone.now - 1.months) } # 引数あり scope :within_days, -> (day) { where('created_at >=', Time.zone.now - (day).days) } def self.ransackable_scopes(_auth_object = nil) %i(within_days within_one_month) end [erb]
<%= link_to( "1ヶ月以内に作成されたユーザ一覧", users_path(@q, q: { within_one_month: true }), class: "btn btn-primary mr-5" ) link_to( "7日以内に作成されたユーザ一覧", users_path(@q, q: { within_days: 7 }), class: "btn btn-primary mr-5" ) %> [controller]