我有一个案例,其中Rails请求参数可以有多个值
例如p1[]=v1&p1[]=v2&p1[]=v3
但在某些情况下,它可能只有一个值:
例如p1=v1
如果在控制器中我想检查参数p1是否只有一个值' v1',我该如何实现呢?
if params[:p1] == 'v1'
或
if params[:p1] == ['v1']
还是有更好的方法吗?
答案 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? p>
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