未定义的方法`/'代表nil:NilClass

时间:2013-07-02 19:52:10

标签: ruby-on-rails-3 nomethoderror

我的应用程序助手中有一个非常常见的帮助方法:

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

但我的应用程序一直在为nil:NilClass'错误抛出一个'未定义的方法`/'。

如果我打印number_to_currency(num)它没有问题,只有当我尝试像/ * - +这样的运算符时才会出现此错误。

直到今天这个工作正常,并且只有在产品索引视图中我才会收到错误。

我不确定什么是错的,有人可以帮忙解释一下吗?我很难过!

更新:

这是产品索引视图代码:

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

1 个答案:

答案 0 :(得分:1)

出现错误,因为在某些情况下num变量为nilnumber_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时寻找案例。