9

なぜこれが機能しなくなるのか分かりません。未定義のメソッド 'pluralize' for#<Controller>

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

任意のアイデア探して起動する:

customers_controller.rb

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

そして、私はエラーを取得していますか?

答えて

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'は' String'クラスへのmonkeypatchesのRailsメソッドです。 –

7

デフォルトでは、pluralizeメソッドは、自分のビューでのみ使用可能になります。

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

または

:あなたがしてヘルパーを複数形呼び出すことができます

include ActionView::Helpers::TextHelper 

# app/controllers/cutomers_controller.rb 

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

    def index 
    etc. ... 
+0

この答えはしかし、正しいです私は、ビューヘルパーをコントローラにロードする必要がないことを好みます。あなたは良い説明をしてくれますので、+1 –

+0

私は他の答えが良いことに同意します。 :) –

4

のような:コントローラでそれを使用するには、コントローラクラスのトップでこれを置きます
# app/controllers/cutomers_controller.rb 

class CustomersController < ApplicationController 
    include ActionView::Helpers::TextHelper 
関連する問題