Ruby on rails 为什么Ruby会抱怨这个问题,除非有一组参数?
我的声明如下:Ruby on rails 为什么Ruby会抱怨这个问题,除非有一组参数?,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我的声明如下: unless (parameter.values.any? "" || parameter.values.any? 0 || parameter[:num_units].eql? 0 || parameter[:num_units].nil? || parameter[:num_units].empty?) 这就是我得到的错误: : syntax error, unexpected tINTEGER, expecting ')' ...? "" || parameter.val
unless (parameter.values.any? "" || parameter.values.any? 0 || parameter[:num_units].eql? 0 || parameter[:num_units].nil? || parameter[:num_units].empty?)
这就是我得到的错误:
: syntax error, unexpected tINTEGER, expecting ')' ...? "" || parameter.values.any? 0 || parameter[:num_units].eql... ... ^
编辑1
基本上,我试图做的是检查传入的任何参数的值是否为
nil
,“
或0
,在的参数周围添加括号。任何?
函数:
(parameter.values.any?("") || parameter.values.any?(0) || parameter[:num_units].eql?(0) || parameter[:num_units].nil? || parameter[:num_units].empty?)
=> true
整行的括号可能也不必要。正如前面的答案所提到的,括号。。。它们也使它更具可读性。尽管如此,对于一行来说,这是一个可怕的条件 如果要缩短,可以将其更改为:
除非(parameter.values&[“”,0]).any?|[0,nil,[])。包括?(参数[:num_单位]
(
[0,nil,[]
数组假定您正在检查的参数[:num_units]
的空值是一个数组-如果它是一个哈希,那么显然要将比较数组切换为[0,nil,{}]
完美。效果很好。谢谢!我建议你解释一下为什么需要括号;特别是为什么会出现引用的语法错误。解释器对所有链接的“或”感到困惑例如,在Ruby中,a=var | | 0
是有效的语法,将a
设置为avar
,除非它是nil
,在这种情况下,它将其设置为0
。将该原则应用到示例中。它是否询问是否存在任何问题?on“”| 0
(根据我的示例,它总是比较”
,因为它从来都不是nil
,或者它是在询问如果“”是nil,那么参数值的结果。any?(0)将被使用
。它没有真正的意义,显然不是有意的,并且混淆了人们和Ruby。