2013-07-02 2 views
1

У меня есть довольно общий вспомогательный метод в моем помощнике приложения:неопределенного метод `/» для ноля: NilClass

module ApplicationHelper 
    def quid(num) 
     number_to_currency (num/100.0), unit: "£" 
    end 
end 

Но мои приложения продолжают бросать „неопределенный метод` /“для ноля: NilClass' ошибки.

Если я печатаю number_to_currency (num), у него нет проблемы, это происходит только тогда, когда я пытаюсь поместить оператор как/* - +, чтобы он дал эту ошибку.

Это работало до сегодняшнего дня, и только в представлении индекса продукта я получаю сообщение об ошибке.

Я не уверен, что случилось, может кто-нибудь объяснить? Я в тупике!

UPDATE:

Вот код продукта зрения индекс:

<% @products.each do |product| %> 

     <h3><%= product.title %></h3> 
     <div id="link_text"><%= link_to "See more", product %></div> 
     <%= image_tag(product.avatar.url(:medium)) %><br/> 
     <%= product.description %><br /> 
     <%= quid product.price_in_pence %> 

    <% end %> 

price_in_pence представляет собой целое число, но превращение 100,00 в 100 не помогает, поэтому я не думаю, что это вопрос, я Думаю, это потому, что по какой-то причине num возвращает nil.

+0

Не уверен, что это не так, проверили ли вы, что 'num' тоже плавает? –

ответ

1

Ошибка возникает, поскольку в некоторых случаях переменная num равна nil. number_to_currency(nil) работы, потому что помощник реализуется так:

def number_to_currency(number, options = {}) 
    return unless number 
    ... 
end 

Источник: http://apidock.com/rails/ActionView/Helpers/NumberHelper/number_to_currency

Вы видите, nil не больно здесь, потому что он будет немедленно вернуться.

Ваша функция, однако, пытается выполнить сначала nil/100.0. По мере возникновения ошибки, метод / не определен на nil.

Вам, вероятно, понадобится специальная обработка nil или охота на случаи, когда nil предоставляется вашему помощнику.

+0

Спасибо tessi, это определенно кажется проблемой. Не могли бы вы предложить какую-либо помощь в том, как отслеживать, где дается ниль для моего помощника? – jfdimark

+2

на самом деле неважно. Я вижу, где проблема, и я собираюсь добавить проверку класса, чтобы гарантировать, что она не может быть нулевой в будущем. – jfdimark

Смежные вопросы