Ответ 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 %>
<% if dashboard_pane_counter.remainder(3) == 0 %>
do something
<% end>
Если dasboard_pane_counter не был определен, как я могу заставить это оценивать значение false, а не генерировать исключение?
<% 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 %>
При использовании рельсов и переменных экземпляра nil имеет метод try
, поэтому вы можете сделать:
<% if @dashboard_pane_counter.try(:remainder(3)) == 0 %>
#do something
<% end %>
поэтому, если переменная экземпляра не определена, try(:anything)
вернет nil и, следовательно, оценит значение false. И nil == 0
false
local_assigns можно использовать для этого, так как этот вопрос из нескольких лет назад, я проверил, что он существует в предыдущих версиях rails
<% if local_assigns[:dashboard_pane_counter]
&& dashboard_pane_counter.remainder(3) == 0%>
<% end %>
В примечаниях здесь
Другим способом, с аккуратным драгоценным камнем, является "andand."
Установлено
if !var.nil?
Я бы использовал
unless var.nil?
Это намного лучший рубиновый код!