3

current_userユーザーコントローラーのインデックスアクションでは、ActiveRecord::Relationオブジェクトと同じ都市に属するすべてのユーザーをキャプチャできます@users。私の見解では@users、結果を繰り返し表示することができます。私がやりたいのはcurrent_user、結果をフィルタリングするための追加のオプションを提供することです。ビューにフォームとフィルターボタンを追加します。これにより、current_userは次のようなフィルターを選択できます。

  1. 最小年齢と最大年齢(ドロップダウン)
  2. 宗教(チェックボックスのドロップダウン)
  3. ダイエット(チェックボックスのドロップダウン)
  4. 等々。

current_userが選択を行い、フィルターをクリックすると、選択した基準に基づいて結果がフィルターされます。これを行うためのクエリを作成する方法を知りたいですか?

4

2 に答える 2

10

また、ユーザーモデルでスコープメソッドを作成することにより、ライブラリなしでこれを自分で行うのも比較的簡単です。例えば:

 class User

   def self.filtered_by_age(opts = {})
     min = opts[:min]
     max = opts[:max]
     user = User.arel_table

     if min && max
       self.where(:age => min..max)
     elsif min && !max
       self.where(user[:age].gt(min))
     elsif max && !min
       self.where(user[:age].lt(max))
     else
       self.all
     end
   end

 end

その後、あなたはそれを呼び出すことができます

@users.filtered_by_age(min: 25, max: 52)
于 2013-03-18T13:22:19.400 に答える
4

最善の策は、Ranksackのいずれかです。https://github.com/ernie/ransack これは検索に焦点を合わせた機能を提供します。

また

Squeelは、ActiveRecordの高度なクエリのための使いやすいインターフェイスを提供します:https ://github.com/ernie/squeel

于 2013-03-18T10:51:20.693 に答える