12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ransackの検索パラメータを渡す方法 メモ

Posted at

##link_to
例えばlink_toで
book/1 というルーティングに画面遷移したい場合

book = Book.find(1)して

link_to @book.name, book_path(book.id)とか
link_to @book.name, book_path(params[:id])とか

すると思う。多分ね。
ransackの場合

link_to @book.name, book_path(@q, :'q[book_id_eq' => "#{@book.id}")

という風にするとransackのquery parameterを与えることができる。

##indexページでransackで@booksという一覧を表示している場合

ransackで検索するには
[eq, start, cont]とかをうまく使う

今回もBookオブジェクトがあると仮定

  def index
    #検索オブジェクト
    @search = Book.ransack(params[:q])

    #検索結果
    @books = @search.result
  end
<%= search_form_for @search do |f| %>
  <%= f.label :name, "名前" %>
  <%= f.search_field :name_start %>

  <%= f.label :price_gtep, "価格" %>
  <%= f.search_field :price_gteq %>

  <div class="actions">
    <%= f.submit "検索" %>
  </div>
<% end %>

link_to "一覧に戻る", books_path(@q, :'q[book_name_start' => "#{@book.name}")

これで一覧に戻ったときに検索した状態で@book.nameを検索した状態で一覧表示されます。
urlをみるとbooks/%DAsvijkrgsdみたいなransackの検索パラメータが埋め込まれているはず。
pageも引数として受け渡せるかは謎。試してみる。

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?