2011-10-18 11 views

Respuesta

43
<% if defined?(:dashboard_pane_counter) && dashboard_pane_counter.remainder(3) == 0 %> 
    # do_something here, this assumes that dashboard_pane_counter is defined, but not nil 
<% end %> 
+10

símbolo no funcionó para mí. así que tuve que comprobar de esta forma 'if defined? (variable_name)' – HungryCoder

+0

gracias ... a veces la respuesta más simple es la correcta :) – baash05

5

Al utilizar los carriles y las variables de instancia, nil tiene un método try definido, por lo que puede hacer:

<% if @dashboard_pane_counter.try(:remainder(3)) == 0 %> 
    #do something 
<% end %> 

por lo que si no se define la variable de instancia, try(:anything) volverá a cero y por lo tanto evaluar a falso. Y nil == 0 es falso

+1

Esto aún causará un error si la variable no se ha definido, por lo que no responde la pregunta. – michaeltwofish

+0

No, no lo hará, rieles ha 'magia construida en': ' 1.9.3p392: 005> @hh => nil 1.9.3p392: 006> @ hh.try (: nada) => nil' – Yule

+0

Entonces, por ejemplo, variables, nil tiene un 'intento' método – Yule

-2

Insted de

if !var.nil? 

me gustaría utilizar

unless var.nil? 

Eso es mucho mejor código de rubí!

+3

, esto solo se aplica si la variable se definió anteriormente a este código. ¡Prueba si! Adallajglaksdkfaj.nil? en la primera línea de una "función". kablammo :) – baash05

3

local_assigns se pueden utilizar para eso, ya que esta pregunta es de hace unos años, he verificado que existe en las versiones anteriores de los carriles

<% if local_assigns[:dashboard_pane_counter] 
       && dashboard_pane_counter.remainder(3) == 0%> 
<% end %> 

Es en las notas aquí

http://apidock.com/rails/ActionController/Base/render

Cuestiones relacionadas