Подтвердить что ты не робот

Как проверить, определена ли переменная в рельсах?

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

Если dasboard_pane_counter не был определен, как я могу заставить это оценивать значение false, а не генерировать исключение?

4b9b3361

Ответ 1

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

Ответ 2

При использовании рельсов и переменных экземпляра nil имеет метод try, поэтому вы можете сделать:

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

поэтому, если переменная экземпляра не определена, try(:anything) вернет nil и, следовательно, оценит значение false. И nil == 0 false

Ответ 3

local_assigns можно использовать для этого, так как этот вопрос из нескольких лет назад, я проверил, что он существует в предыдущих версиях rails

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

В примечаниях здесь

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

Ответ 5

Установлено

if !var.nil?

Я бы использовал

unless var.nil?

Это намного лучший рубиновый код!