Rails - 为什么OR不能在这里工作?

时间:2013-08-07 10:24:34

标签: ruby-on-rails

我想循环使用参数并排除某些参数,所以我使用了这个循环:

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;条件有效,有人可以向我解释一下吗?感谢。

2 个答案:

答案 0 :(得分:4)

key !='authenticity_token' && key != 'utf8'

当密钥既不是true也不是authenticity_token

时,这将返回utf8

key !='authenticity_token' || key != 'utf8'

对于包含trueauthenticity_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')

它是否定逻辑

相关问题