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 EW幫手,那麼你可以使用String#pluralize

"customer".pluralize(@imported_customers.size) 

如果你想使用視圖助手,那麼你應該包括相應的輔助作爲另一個答案,或者只是使用ActionView::Rendering#view_context

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

啊哈!我沒有意識到'String'有一個複數方法。我選擇了這個答案,因爲它不涉及將視圖助手帶入控制器。謝謝! –

+0

值得一提的是,這不是一個本地Ruby方法,而是'String#pluralize'是Rails將monkeypatches添加到'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 
相關問題