在views/products/list.html.erb
我使用:
<%= product.power.power_in_kw.to_kw if ... %>
to_kw
在lib/my_extensions.rb
中与其他方法一起定义:
class Symbol
def pluralize
to_s.pluralize.to_sym
end
end
class BigDecimal
def to_kw
number_to_currency(self, :unit => "kw", :format => "%n%u", :precision => 1)
end
end
class Float
def to_dollar
number_to_currency(self)
end
end
config/environment.rb
最后有以下一行:
require 'my_extensions'
但是,我收到以下错误:
undefined method `to_kw' for #<BigDecimal:2704620,'0.555E2',8(8)>
我错过了什么?
答案 0 :(得分:2)
我知道您提交此文件已经过了好几个小时,但重启应用后这些功能可能会有效。 lib
中的项目通常不会像app
中那样自动重新加载,因此在执行完全重启之前,所做的更改不会反映在应用程序中。
把它扔到那里:)
我还要指出,一旦你启动并运行这些方法,它们可能不会立即起作用。这是因为您的视图是在所有Rails视图助手的上下文中定义的,例如ActionView::Helpers::NumberHelper
,它定义了number_to_currency
。但是,lib
中的扩展名未在此类上下文中定义,因此无法访问这些帮助程序。
ActionView::Helpers::NumberHelper.number_to_currency
可能更有可能按预期工作。
答案 1 :(得分:1)
您应该在ActionView::Helpers::NumberHelper
和BigDecimal
Float
class BigDecimal
include ActionView::Helpers::NumberHelper
def to_kw
number_to_currency(self, :unit => "kw", :format => "%n%u", :precision => 1)
end
end
class Float
include ActionView::Helpers::NumberHelper
def to_dollar
number_to_currency(self)
end
end
我认为错误undefined method to_kw
是由未定义的方法number_to_currency
引起的。