9

Non so perché questo ha deciso di smettere di funzionare.Metodo non definito 'pluralize' per # <Controller>

customers_controller.rb

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

e sto ottenendo l'errore:

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

Hai idea di dove cominciare a guardare?

risposta

21

Se non si desidera utilizzare vi aiutanti ew, quindi è possibile utilizzare String#pluralize:

"customer".pluralize(@imported_customers.size) 

Se si desidera utilizzare vista aiutanti allora si dovrebbe includere il rispettivo aiuto come un altro risposte o semplicemente usare ActionView::Rendering#view_context:

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

Aha! Non mi rendevo conto che 'String' aveva un metodo pluralizzato. Ho scelto questa risposta perché non implica che io porti gli helper della vista nel controller. Grazie! –

+0

Vale la pena chiarire che questo non è un metodo nativo di Ruby, piuttosto 'String # pluralize' è un metodo che Rails monkeypatches sulla classe' String'. –

7

Per impostazione predefinita, il metodo pluralize è reso disponibile solo nelle visualizzazioni. Per usarlo in un controllore, mettere questo in cima alla vostra classe controller:

include ActionView::Helpers::TextHelper 

come

# app/controllers/cutomers_controller.rb 

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

    def index 
    etc. ... 
+0

Questa risposta è corretta, tuttavia , Preferirei non dover caricare gli helper della vista nel controller. Fornisci comunque una buona spiegazione, quindi +1 –

+0

Concordo sul fatto che le altre risposte siano migliori. :) –

4

È possibile chiamare pluralize helper con:

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

o

# app/controllers/cutomers_controller.rb 

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