2013-06-01 10 views
9

Sto solo imparando RoR quindi ti prego di sopportare me. Sto cercando di scrivere un if o un'istruzione con le stringhe. Qui è il mio codice:Verifica se la stringa non è uguale a nessuna delle due stringhe

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

Ho provato molti altri modi, utilizzando le parentesi e || ma nulla sembra funzionare. Forse è a causa del mio background JS ...

Come posso verificare se una variabile non è uguale a stringa uno o stringa due?

risposta

9

Questo è un problema logica di base:

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

sarà sempre vero finché b = c!. Una volta che ti ricordi che nella logica booleana

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

allora si può trovare la via d'uscita dal buio.

(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 

L'unico modo per (a == b) & & (a == c) sia vera per b == c. Quindi, dato che hai dato b! = C, l'istruzione if sarà sempre falsa.

solo indovinare, ma probabilmente si vuole

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

Rock on! Ottima spiegazione, grazie :) – PropSoft

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

o

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