我的应用程序助手中有一个非常常见的帮助方法:
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。
答案 0 :(得分: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
时寻找案例。