我有一个简单的验证:
class Product < ActiveRecord::Base
# include ActionView::Helpers::NumberHelper
...
validates_numericality_of :price, :less_than => 1000000,
:message => "must be less than #{number_with_delimiter(1000000)}"
...
end
在此代码中,我收到以下错误:
undefined method `number_with_delimiter' for #<Class:0x2665a58>
我试图添加:
include ActionView::Helpers::NumberHelper
但它没有帮助。
我错过了什么?
答案 0 :(得分:12)
这里真正的问题是你将这个模块包含在类中,而不是用它扩展类。
不同之处是include会使方法在实例上可用,而extend会将它们放在你尝试使用它们的地方:在类上。
答案 1 :(得分:3)
你应该使用extend:
用法:extend ActionView::Helpers::NumberHelper
这对我有好处
答案 2 :(得分:3)
而不是扩展ActionView
模块。您可以使用ActiveSupport
中的方法
例如:
ActiveSupport::NumberHelper::number_to_currency(10000.1234,{precision: 2,unit: ''})
答案 3 :(得分:2)
您可能缺少依赖项...是您的应用程序可以访问的NumberHelper类吗?
答案 4 :(得分:0)
好的答案,使用:
ActiveSupport :: NumberHelper :: number_to_delimited(数字,选项= {})