【问题标题】:undefined method `/' for nil:NilClassnil:NilClass 的未定义方法“/”
【发布时间】:2013-06-30 08:29:04
【问题描述】:

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

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。

【问题讨论】:

  • 不确定这是否是问题,但您是否检查过num 也是浮动的?

标签: ruby-on-rails-3 nomethoderror


【解决方案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 提供给您的助手时寻找案例。

【讨论】:

  • 谢谢 tessi,这绝对是个问题。您能否就如何追踪我的助手在哪里提供 nil 提供任何帮助?
  • 其实没关系。我可以看到问题出在哪里,我将添加一个类验证,以确保它以后不会再次为 nil。
猜你喜欢
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多