Ответ 1
Это основная логическая проблема:
(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
Единственный способ (a == b) && (a == c), чтобы быть истинным, для b == c. Поэтому, поскольку вы дали b!= C, оператор if
всегда будет ложным.
Просто гадать, но, возможно, вы хотите
<% if controller_name != "sessions" and controller_name != "registrations" %>