pra*_*ski 3 ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2
在我的Users控制器的索引操作中,我能够捕获与current_userActiveRecord :: Relation对象中属于同一城市的所有用户@users.在我看来,我能够迭代@users并显示结果.我想做的是提供current_user进一步筛选结果的选项.我想在视图中添加一个表单和过滤器按钮,这将允许current_user选择过滤器,例如:
一旦current_user进行选择并点击过滤器,结果将根据所选标准进行过滤.我想知道如何构建查询来执行此操作?
通过在用户模型中创建范围方法,在没有库的情况下自己完成此操作也相对简单.例如:
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
Run Code Online (Sandbox Code Playgroud)
然后你可以打电话给
@users.filtered_by_age(min: 25, max: 52)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7581 次 |
| 最近记录: |