Rails:为什么" number_with_delimiter"在我的模型中无法识别的方法?

时间:2010-12-17 04:29:46

标签: ruby-on-rails include number-with-delimiter

我有一个简单的验证:

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

但它没有帮助。

我错过了什么?

5 个答案:

答案 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类吗?

检查official Rails docs

答案 4 :(得分:0)

好的答案,使用:

ActiveSupport :: NumberHelper :: number_to_delimited(数字,选项= {})