在我的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}) %>
如何在此范围内传递客户的年龄?
谢谢!
答案 0 :(得分:4)
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 } )
答案 1 :(得分: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框中输入一些年龄来制作滤镜。