web-dev-qa-db-ja.com

文字列が2つの文字列のいずれとも等しくないかどうかをテストする

私はRoRを学習しているだけなので、我慢してください。文字列を使用したifまたはステートメントを記述しようとしています。これが私のコードです:

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

括弧と||を使用して他の多くの方法を試しましたが、何も機能しないようです。私のJSの背景のせいかもしれません...

変数が文字列1または文字列2と等しくないかどうかをテストするにはどうすればよいですか?

15
PropSoft

これは基本的なロジックの問題です。

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

b!= cである限り、常にtrueになります。ブール論理でそれを覚えたら

(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)がtrueになる唯一の方法は、b == cです。したがって、b!= cを指定したので、ifステートメントは常にfalseになります。

推測するだけですが、おそらく

<% if controller_name != "sessions" and controller_name != "registrations" %>
14
Old Pro
<% unless ['sessions', 'registrations'].include?(controller_name) %>

または

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