2

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

params.each do |key, value|
  html += "#{key}: #{value}</br>" if key !='authenticity_token' && key != 'utf8'
end

现在,这适用于 && 但是当我尝试用 || 替换它时 :

html += "#{key}: #{value}</br>" if key !='authenticity_token' || key != 'utf8'

它没有用。使用 OR 更有意义,因为它循环遍历每个键、值对,如果键是 a_token OR 键,那么它应该跳过它。不能有两个在同一行。我想我不太明白 Rails 在这里如何处理循环以及 && 条件为什么有效,有人可以向我解释一下吗?谢谢。

4

2 回答 2

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

这将true在 key 既不是authenticity_token也不是时返回utf8

然而

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

这将返回true每个键,包括authenticity_token,utf8 因为

utf8关键key !='authenticity_token'将是true

authenticity_token密钥的 abdkey !='utf8'将是true

如果你想使用 || 条件使用如下

!(key =='authenticity_token' || key == 'utf8')
于 2013-08-07T10:30:18.493 回答
1

如果您需要使用 OR 您应该尝试这样的事情

if !(key =='authenticity_token' || key == 'utf8')

它是一个否定逻辑

于 2013-08-07T10:29:20.863 回答