17

我只是在学习 RoR,所以请多多包涵。我正在尝试用字符串编写 if 或语句。这是我的代码:

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

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

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

4

2 回答 2

15

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

(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) && (a==c) 为真的唯一方法是 b==c。所以既然你给了 b != c,这个if陈述永远是错误的。

只是猜测,但可能你想要

<% if controller_name != "sessions" and controller_name != "registrations" %>
于 2013-06-01T08:07:40.917 回答
15
<% unless ['sessions', 'registrations'].include?(controller_name) %>

或者

<% if ['sessions', 'registrations'].exclude?(controller_name) %>
于 2013-06-01T09:27:03.243 回答