测试string是否不等于两个字符串中的任何一个

时间:2013-06-01 08:04:43

标签: ruby if-statement logic

我只是在学习RoR,所以请耐心等待。我试图用字符串写一个if或语句。这是我的代码:

<% if controller_name != "sessions" or controller_name != "registrations" %>

我尝试了许多其他方法,使用括号和||但似乎没有任何效果。也许是因为我的JS背景...

如何测试变量是否不等于字符串1或字符串2?

2 个答案:

答案 0 :(得分:15)

<% unless ['sessions', 'registrations'].include?(controller_name) %>

<% if ['sessions', 'registrations'].exclude?(controller_name) %>

答案 1 :(得分:13)

这是一个基本的逻辑问题:

(a !=b) || (a != c) 
只要b!= c,

总是为真。一旦你记住了布尔逻辑

(x || y) == !(!x && !y)
然后你就可以找到离开黑暗的道路了。

(a !=b) || (a != c) 
!(!(a!=b) && !(a!=c))   # Convert the || to && using the identity explained above
!(!!(a==b) && !!(a==c)) # Convert (x != y) to !(x == y)
!((a==b) && (a==c))     # Remove the double negations

(a == b)&amp;&amp; (a == c)为真是对于b == c。因此,既然你已经给出了b!= c,那么if语句将始终为false。

猜猜,但可能你想要

<% if controller_name != "sessions" and controller_name != "registrations" %>