2013-06-01 47 views
9

Tôi chỉ đang học RoR vì vậy hãy chịu đựng với tôi. Tôi đang cố viết một câu lệnh if hoặc statement. Đây là mã của tôi:Kiểm tra nếu chuỗi không bằng một trong hai chuỗi

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

Tôi đã thử nhiều cách khác, sử dụng dấu ngoặc đơn và || nhưng không có gì có vẻ hiệu quả. Có lẽ vì nền JS của tôi ...

Làm cách nào để kiểm tra xem biến không bằng chuỗi một hay chuỗi hai?

Trả lời

9

Đây là một vấn đề logic cơ bản:

(a !=b) || (a != c) 

sẽ luôn luôn đúng chừng nào b = c!. Khi bạn nhớ rằng trong logic boolean

(x || y) == !(!x && !y) 

thì bạn có thể tìm đường thoát khỏi bóng tối.

(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 

Cách duy nhất để (a == b) & & (a == c) là đúng là dành cho b == c. Vì bạn đã đưa ra b! = C, câu lệnh if sẽ luôn là sai.

Chỉ cần đoán, nhưng có lẽ bạn muốn

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

Rock on! Lời giải thích tuyệt vời, cảm ơn bạn :) – PropSoft

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

hoặc

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