3

私の offer.rb モデルでは、これらのオファーを持っているクライアントの後にフィルタリングを行っています。しかし、スコープ内で別のパラメーターを渡して、たとえばクライアントの年齢などで検索できるようにしたいと考えています。

これが私のオファーモデルにあるものです:

scope :with_client_id, lambda { |client_id| where(:client_id => client_id) }

ビューで:

<%= f.select(:with_client_id, options_for_select(current_partner.clients.collect{|c| [c.name, c.id]}), { include_blank: true}) %>

このスコープで言うごとにクライアントの年齢を渡すにはどうすればよいですか?

ありがとう!

4

2 に答える 2

4

2 つのオプション

「スプラ」を使う

scope :with_client_id_and_age, lambda { |params| where(:client_id => params[0], :age => params[1]) }

そして、次のように呼び出す必要があります。

Offer.with_client_id_and_age( client_id, age )

params ハッシュの使用

scope :with_client_id_and_age, lambda { |params| where(:client_id => params[:client_id], :age => params[:age]) }

そして、次のように呼び出す必要があります。

Offer.with_client_id_and_age( { client_id: client_id, age: age } )
于 2016-08-03T20:27:08.240 に答える
0

スコープを変更せずに、ビューで選択を変更しただけです。

<%= f.select(:with_client_id, options_for_select(current_partner.clients.collect{|c| [c.name_and_age, c.id]}), { include_blank: true}) %>

クライアント コントローラーで name_and_age メソッドを使用すると、次のようになります。

def name_and_age
  [name, age].compact.join " "
end

select2 ボックスに年齢を入力して、フィルタリングを行うこともできます。

于 2014-08-18T15:33:09.770 に答える