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

两种选择

使用“splat”

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 )

使用参数哈希

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 回答