Работа с ожидаемым нулем - PullRequest
       11

Работа с ожидаемым нулем

0 голосов
/ 17 ноября 2009

Я ожидаю увидеть nil со следующим встроенным Ruby:

<%=h [@inventory.origin.code] %>

возвращает «NoMethodError nil объект» . Однако, когда объект действительно присутствует, он работает нормально (как и ожидалось).

Поэтому я создал этот тест (следуя этому совету):

<b>origin_id:</b>
  <% if (@inventory.origin.code.nil? or @inventory.origin.code == 0)  %>
  <%=h [@inventory.origin] %>
  <% else %>
  <%=h @inventory.origin.code %>
  <% end %>

неожиданно возвращается rails NoMethodError "У вас есть нулевой объект, когда вы его не ожидали!"

Есть ли у вас какие-либо предложения по решению этой ситуации? Спасибо!

Ответы [ 2 ]

3 голосов
/ 17 ноября 2009

Вы добавляете чек .nil? слишком поздно. Я предполагаю, что это origin, что ноль, а не code, иначе вы не получите эту ошибку. Используйте это вместо:

<%=h [@inventory.origin.code] unless @inventory.origin.nil? %>
1 голос
/ 08 декабря 2009

Фактор ответа dcneiner:

<%=h [@inventory.origin.code] if @inventory.origin %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...