while operator one multiple estructura else conditions begin ruby if-statement logic

one - ruby operators



Prueba si string no es igual a cualquiera de dos cadenas (2)

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

o

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

Acabo de aprender RoR así que por favor tengan paciencia conmigo. Estoy tratando de escribir una instrucción if o con cadenas. Aquí está mi código:

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

He intentado de muchas otras maneras, usando paréntesis y || Pero nada parece funcionar. Tal vez sea por mi experiencia en JS ...

¿Cómo puedo probar si una variable no es igual a la cadena uno o la cadena dos?


Este es un problema de lógica básica:

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

siempre será cierto siempre que b! = c. Una vez que recuerdas eso en lógica booleana

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

entonces puedes encontrar tu camino para salir de la oscuridad.

(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

La única forma de que (a == b) && (a == c) sea verdadero es para b == c. Entonces, dado que has dado b! = C, la sentencia if siempre será falsa.

Solo adivinando, pero probablemente quieras

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