📖

検索結果をransack parameterを利用して引き継ぐ

2024/02/17に公開

実装の想定

  • articles#index(記事の一覧ページ) から articles#bulk_edit(一括更新ページ)へ遷移する際に、articles#indexでのransackの検索パラメーターをbulk_editでも引き継ぎたい

実装

  • ransack純正の処理でもありそうだが、ドキュメント見ていても見つけられなかったので
  • ちと無理やりだけどこんな感じで実装できる
  • (ransack_paramsはもうちょいセキュアにお願いします!)
    def index
      @q = Article.all.ransack(ransack_params)
      @pagy, @articles = pagy(@q.result.order(created_at: :desc))
      @query = ransack_params.to_h.each_with_object({}) do |(key, value), new_hash|
        new_key = "q[#{key}]"
        new_hash[new_key] = value
      end
    end

    def ransack_params
      params.require(:q).permit!
    end
= link_to bulk_edit_articles_path(@query)

Discussion