PARAMS是乱码,所以你可以在其中使用任何散列法,像任何?或空?,您可以访问键和值很好,但轨道富人有条件链接link_to_if一个帮手让你的例子可能是这样的:
<%= link_to_if params[:country].present?, 'Clear Filters', users_path %>
,或者如果你想知道是否有任何PARAMS
<%= link_to_if params.any?, 'Clear Filters', users_path %>
当然,也有你的PARAMS变量的项目,如控制器等,如果你有一组则params的检查,你总是可以做:
<%= link_to_if (params.keys & filters).empty?, 'Clear Filters', users_path %>
这就是& operator所做的。至于过滤器,你可以使用任何选项来传递数据到视图,以控制器上的实例变量(不推荐,导致它不是逻辑的一部分)将方法放在帮助器上(可以工作)或者在模型常数(我更喜欢)
如果你选择离开它的辅助,你可以把它添加到users_helper是有意义的事业就会帮助布局视图至极,绝对是为什么助手适用于:
# helpers/users_helper.rb
def filters
['country', 'height', 'age']
end
但是,您也可以在其他地方使用这些值盟友,在那里你会真正筛选值,我认为它是模型来过滤那些有责任,所以你可以把它放在你的模型,它可能是这样的:
# models/user.rb
...
FILTERS = ['country', 'height', 'age']
...
#your view
<%= link_to_if (params.keys & User::FILTERS).empty?, 'Clear Filters', users_path %>
有一个.any?方法,对于Ruby中的枚举类型,你有没有试过?,也是.empty?可以工作 – aledustet
我编辑了这个问题。这些不起作用。 –
我认为你需要检查你需要的所有参数,以确保不存在使用param.keys属性,检查答案 – aledustet