我想循环使用参数并排除某些参数,所以我使用了这个循环:
params.each do |key, value|
html += "#{key}: #{value}</br>" if key !='authenticity_token' && key != 'utf8'
end
现在,这适用于&amp;&amp;但是当我试图用||替换它时:
html += "#{key}: #{value}</br>" if key !='authenticity_token' || key != 'utf8'
它不起作用。使用OR更有意义,因为它遍历每个键,值对,如果键是a_token OR键,那么它应该跳过它。在同一条线上不可能同时存在。我想我不太明白Rails如何处理这里的循环以及为什么&amp;&amp;条件有效,有人可以向我解释一下吗?感谢。
答案 0 :(得分:4)
key !='authenticity_token' && key != 'utf8'
当密钥既不是true
也不是authenticity_token
utf8
而
key !='authenticity_token' || key != 'utf8'
对于包含true
,authenticity_token
的每个密钥,都会返回utf8
因为
utf8
密钥key !='authenticity_token'
的将为true
authenticity_token
密钥key !='utf8'
的 abd将为true
如果你想使用||条件使用
!(key =='authenticity_token' || key == 'utf8')
答案 1 :(得分:1)
如果你需要使用OR,你应该尝试这样的事情
if !(key =='authenticity_token' || key == 'utf8')
它是否定逻辑