9

Не знаете, почему это решило прекратить работать.Неопределенный метод «pluralize» для # <Controller>

customers_controller.rb

redirect_to customers_url, 
      notice: pluralize(@imported_customers.size, "customer") + " imported!" 

И я получаю ошибку:

NoMethodError: undefined method 'pluralize' for #CustomersController:0x007f3ca8378a20

Любая идея, где начать искать?

ответ

21

Если вы не хотите использовать vi РЭБ хелперы, то вы можете использовать String#pluralize:

"customer".pluralize(@imported_customers.size) 

Если вы хотите использовать их помощник, то вы должны включать в себя соответствующий помощник как еще ответы или просто использовать ActionView::Rendering#view_context:

view_context.pluralize(@imported_customers.size, "customer") 
+0

Aha! Я не понимал, что у 'String' был метод pluralize. Я выбрал этот ответ, потому что это не связано с тем, что я ввел диспетчер справки. Благодаря! –

+0

Стоит быть ясным, что это не собственный метод Ruby, а 'String # pluralize' - это метод, который Rails обезьяна передает в класс' String'. –

7

По умолчанию метод pluralize доступен только в ваших представлениях. Для того, чтобы использовать его в контроллере, поместите это в верхней части вашего класса контроллера:

include ActionView::Helpers::TextHelper 

как

# app/controllers/cutomers_controller.rb 

class CustomersController < ApplicationController 
    include ActionView::Helpers::TextHelper 

    def index 
    etc. ... 
+0

Этого ответ является правильным, однако , Я бы предпочел не загружать помощников вида в контроллер. Вы даете хорошее объяснение, хотя, так +1 –

+0

Я согласен, что другие ответы лучше. :) –

4

Вы можете вызвать множественное число помощника с:

ActionController::Base.helpers.pluralize(@imported_customers.size, "customer") + " imported!" 

или

# app/controllers/cutomers_controller.rb 

class CustomersController < ApplicationController 
    include ActionView::Helpers::TextHelper 
Смежные вопросы