Rails检查请求参数

时间:2014-06-04 08:54:42

标签: ruby-on-rails ruby

我有一个案例,其中Rails请求参数可以有多个值 例如p1[]=v1&p1[]=v2&p1[]=v3
但在某些情况下,它可能只有一个值:
例如p1=v1
如果在控制器中我想检查参数p1是否只有一个值' v1',我该如何实现呢?

if params[:p1] == 'v1'

if params[:p1] == ['v1']

还是有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

您不能以这种方式发送参数,只有最后一个值将存储在参数中。你需要明确地说它们是一个数组:

p1[]=v1&p1[]=v2&p1[]=v3

然后你可以这样做:

params[:p1].include? 'v1'

假设您始终通过p1而不是p1[]=,则无论传递了多少p1=Array.wrap(params[:p1]).include? 'v1' 。否则,您可以随时执行:

v1

更新

要检查Array.wrap(params[:p1]).uniq == ['v1'] 是否是唯一的值,请执行以下操作:

{{1}}

答案 1 :(得分:0)

使用Array include?

if ['v1', 'v1v2', 'v1v2v3'].include?(params[:p1])

答案 2 :(得分:0)

如果参数为单个值,您可以将参数转换为数组,然后在整个代码中将其视为普通数组。

params[:p1] = [params[:p1]] unless params[:p1].is_a? Array

然后像往常一样使用params

if params[:p1].include? 'v1'
    # do your logic here
end