Rails: Почему метод "number_with_delimiter" не распознается внутри моей модели? - PullRequest
8 голосов
/ 17 декабря 2010

У меня есть простая проверка:

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 ]

12 голосов
/ 17 декабря 2010

Настоящая проблема здесь в том, что вы включаете этот модуль в класс, а не расширяете его классом.

Различия в том, что include сделает методы доступными в экземпляре, тогда как расширение сделает их там, где вы пытаетесь их использовать: в классе.

4 голосов
/ 22 сентября 2014

Вместо расширения ActionView модуля. Вы можете использовать методы из ActiveSupport вместо

Например:

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

3 голосов
/ 14 мая 2012

Вы должны использовать расширение:

Использование: extend ActionView::Helpers::NumberHelper

Это хорошо для меня

2 голосов
/ 17 декабря 2010

Возможно, вам не хватает зависимости ... класс NumberHelper доступен для вашего приложения?

Проверьте официальные документы Rails

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...