12

我有一个简单的验证:

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

但这没有帮助。

我错过了什么?

4

5 回答 5

18

这里真正的问题是您将此模块包含在类中,而不是用它扩展类。

不同之处在于 include 将使方法在实例上可用,而 extend 将使它们在您尝试使用它们的地方:在类上。

例如方法使用

include ActionView::Helpers::NumberHelper

对于类方法使用

extend ActionView::Helpers::NumberHelper
于 2010-12-17T04:47:15.710 回答
5

而不是扩展ActionView模块。您可以使用方法 fromActiveSupport代替

例如:

ActiveSupport::NumberHelper::number_to_currency(10000.1234,{precision: 2,unit: ''})

于 2014-09-22T17:00:57.707 回答
3

你应该使用扩展:

用法:extend ActionView::Helpers::NumberHelper

这对我有好处

于 2012-05-14T11:17:47.210 回答
2

您可能缺少依赖项……您的应用程序可以访问 NumberHelper 类吗?

查看官方 Rails 文档

于 2010-12-17T04:32:51.820 回答
1

好答案,使用:

ActiveSupport::NumberHelper::number_to_delimited(number, options={})

于 2020-01-21T08:45:57.193 回答