rails from comment ruby-on-rails ruby erb

ruby on rails - from - ¿Cómo compruebo si una variable está definida en los carriles?



render json rails (6)

<% if dashboard_pane_counter.remainder(3) == 0 %> do something <% end>

Si no se definió dasboard_pane_counter, ¿cómo puedo hacer que esto se evalúe como falso en lugar de lanzar una excepción?


Cuando se usan rieles y variables de instancia, nil tiene un método de try definido, por lo que puede hacer:

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

por lo tanto, si la variable de instancia no está definida, try(:anything) devolverá nil y, por lo tanto, evaluará como falso. Y nil == 0 es falso


Insted de

if !var.nil?

yo usaría

unless var.nil?

Eso es mucho mejor código rubí!



Publicar esta respuesta para los programadores principiantes como yo. Esta pregunta puede responderse simplemente usando dos pasos (o uno si usa &&). Es una respuesta más larga y menos bonita, pero ayuda a los nuevos programadores a comprender lo que están haciendo y utiliza una técnica muy simple que aún no está presente en ninguna de las otras respuestas. El truco es usar una variable de instancia (@), no funcionará con una variable local:

if !var.nil?

Si se define @foo, se devolverá "barra", de lo contrario no (sin error). Por lo tanto en dos pasos:

unless var.nil?


Se pueden usar local_assigns para eso, ya que esta pregunta es de hace unos años, verifiqué que existe en versiones anteriores de rieles

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

Está en las notas aquí

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


<% 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 %>