9

Bunun neden çalışmayı bıraktığına emin olmadığından emin olun.Tanımsız yöntem 'çoğullama' için # <Controller>

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

herhangi bir fikir aramaya başlamak:

customers_controller.rb

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

Ve hata alıyorum?

cevap

21

Eğer vi kullanmak istemiyorsanız ew yardımcıları, o zaman String#pluralize kullanabilirsiniz:

"customer".pluralize(@imported_customers.size) 

o zaman başka cevaplar olarak ilgili yardımcı içermelidir görünüm yardımcıları kullanabilir veya sadece ActionView::Rendering#view_context kullanmak istiyorsanız:

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

Aha! String'in çoğul bir yöntemi olduğunu bilmiyordum. Bu cevabı seçtim, çünkü denetleyiciye görüntü yardımcılarını getirmemi gerektirmiyor. Teşekkürler! –

+0

Bunun yerel bir Ruby yöntemi olmadığı, daha çok "String # pluralize", "String" sınıfına Rails monkeypatches yöntemidir. –

7

Varsayılan olarak pluralize yöntemi yalnızca görünümlerinizde kullanılabilir.

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

veya

: Sen ile yardımcı çoğul çağırabilirsiniz

include ActionView::Helpers::TextHelper 

# app/controllers/cutomers_controller.rb 

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

    def index 
    etc. ... 
+0

Bu cevap doğrudur, ancak Görünüm yardımcılarını denetleyiciye yüklememeyi tercih ederim. Ancak iyi bir açıklama sağladınız, bu yüzden +1 –

+0

Diğer cevapların daha iyi olduğunu kabul ediyorum. :) –

4

gibi: bir denetleyici kullanmak için, kontrolör sınıfının en üstünde bu koymak
# app/controllers/cutomers_controller.rb 

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