0

我有一个页面,其中包含几个 URL 参数,这些参数不是我用于排序和过滤的模型属性。目前,我正在尝试像这个问题一样在控制器中验证它们,但是无法验证参数是否在预期的一组值中。

before_filter :validate_params, :only => :index

def validate_params
  if !params[:type] = 'any' || !params[:type] = 'up' || !params[:type] = 'down'
    params[:type] = 'any'
  end
end

在这种情况下,即使参数为“up”或“down”,该值也始终为“any”。

4

3 回答 3

0

您应该使用==or!=和 not来比较它=

=用于分配和==用于!=比较

def validate_params
  if params[:type] != 'any' || !params[:type] != 'up' || !params[:type] != 'down'
    params[:type] = 'any'
  end
end

或者

!['any', 'up', 'down'].include?(params[:type])
于 2013-10-31T05:45:11.117 回答
0

好吧,如果您考虑一下,如果 params[:type] == 'up' 那么它不是 params[:type] == 'down' 所以它总是设置为 any,因为您使用的是 ||。尝试使用 && 代替

if !params[:type] == 'any' && !params[:type] == 'up' && !params[:type] == 'down'

如果你想设置一个与 any 不同的 params[:type] ,向上或向下并使用 ==

于 2013-10-31T05:46:18.373 回答
0

情况可能是这样的,

before_filter :validate_params, :only => :index

def validate_params
  if params[:type] != 'any' || params[:type] != 'up' || params[:type] != 'down'
    params[:type] = 'any'
  end
end
于 2013-10-31T05:48:15.597 回答