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 ActionView::Helpers::NumberHelper

クラスメソッド用

extend ActionView::Helpers::NumberHelper
于 2010-12-17T04:47:15.710 に答える
2

依存関係が欠落している可能性があります... アプリケーションから NumberHelper クラスにアクセスできますか?

Railsの公式ドキュメントを確認してください

于 2010-12-17T04:32:51.820 に答える
1

良い答え、使用:

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

于 2020-01-21T08:45:57.193 に答える