【发布时间】:2014-05-23 03:09:18
【问题描述】:
我在设置多参数范围时遇到问题,我不知道将提供多少参数,我已在“胖控制器”下方发布,并且想知道如何在适当的范围内进行操作....(或者我猜的替代方案)
def browse
conditions = {}
if params[:category].present?
conditions[:category] = params[:category]
end
if params[:make].present?
conditions[:make] = params[:make]
end
@cars = Car.where(conditions)
end
这是我能想到的最好的方法,确保如果只提供两个参数之一,那么它会正确处理它。我觉得上面的控制器代码是不言自明的,但很高兴提供更多信息。 (每个 present? 块中都有额外的逻辑,但我已将其删除以使代码更清晰)
【问题讨论】:
-
为了完整起见,能不能不显示整个代码?
-
我问的原因是因为你可以很容易地通过首先使用这个来删除你的存在检查器:
params.keep_if { |k,v| v.present? }
标签: ruby-on-rails model-view-controller ruby-on-rails-4