Gem"ransack"のアウトプット
Ransackとは
Ransackとは、複雑な検索を簡単に実装できるGem
特徴は以下3点
・search_form_forというフォームを使える
・検索方法を、述語で設定できる
・キー(:q)を使ってテーブルから情報を探す
検索の流れ
#コントローラー
def index
@p = モデル.ransack(params[:q])
@results = @p.result(distinct: true).order("RAND()")
end
#ビューファイル
<%= search_form_for @p, url: prefix_path do |f| %>
<%= f.collection_select :カラム名_eq, モデル名.all, :id, :name, {include_blank: "指定なし"} %>
<% end %>
#コントローラー
def index
@p = モデル.ransack(params[:q])
@results = @p.result(distinct: true).order("RAND()")
end
#ビューファイル
<%= search_form_for @p, url: prefix_path do |f| %>
<%= f.collection_select :カラム名_eq, モデル名.all, :id, :name, {include_blank: "指定なし"} %>
<% end %>
コントローラーで生成した[:q]の情報が入った@pという変数をビューファイルのsearch_form_forに渡す
→フォームで生成された検索条件を使い、モデルを検索し、情報を配列で取得する。
フォーム部品のカラム名_eqの"_eq"が述語と呼ばれ、検索の方式を指定することができる。"_eq"の部分は完全一致を意味する。公式リファレンスをみると他にもいろいろあり、使い分けることができる。
Author And Source
この問題について(Gem"ransack"のアウトプット), 我々は、より多くの情報をここで見つけました https://qiita.com/kazutoichikawa/items/6c53ec279ba52e1dc0d7著者帰属:元の著者の情報は、元の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 .