![](/img/trans.png)
[英]ruby on rails scopes - ArgumentError: wrong number of arguments(1 for 0)
[英]Rails scopes with multiple arguments
在我的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}) %>
如何在此范围内传递客户的年龄?
谢谢!
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 } )
我保持范围不变,只修改了视图中的选择:
<%= 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框中输入一些年龄来制作滤镜。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.