2013-06-01 10 views
9

私はRoRを学んでいるので、私に同行してください。 if文またはstatement文を文字列で書き込もうとしています。ここに私のコードは次のとおりです。文字列が2つの文字列のいずれかと等しくないかどうかをテストしてください

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

私は括弧を使用して、他の多くの方法を試してみましたが、||が、何も動いていないようにみえてきました。多分私のJSの背景のために...

変数が文字列1または文字列2と等しくないかどうかをテストする方法はありますか?

答えて

9

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

(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 

(== b)は唯一の方法& &(A == c)は真であるとBの== Cのためのものです。したがって、b!= cを指定したので、ifステートメントは常にfalseになります。

ただ、推測、おそらくあなたは、上のロック

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

をしたいです!素晴らしい説明、ありがとう:) – PropSoft

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

または

<% if ['sessions', 'registrations'].exclude?(controller_name) %> 
関連する問題