1

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

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。

4

1 回答 1

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

你看, anil在这里没有伤害,因为它会立即返回。

但是,您的函数会尝试首先执行nil / 100.0。由于错误状态,该/方法未定义在nil.

您可能需要一些特殊nil待遇,或者在nil给您的助手时寻找案件。

于 2013-07-02T19:58:54.987 回答