9

Nie wiem, dlaczego to postanowiło zaprzestać pracy.Niezdefiniowana metoda "liczby mnogiej" dla # <Controller>

customers_controller.rb

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

A ja dostaję błąd:

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

Każdy pomysł gdzie zacząć szukać?

Odpowiedz

21

Jeśli nie chcesz używać vi ew pomocnicy, a następnie można użyć String#pluralize:

"customer".pluralize(@imported_customers.size) 

Jeśli chcesz użyć widoku pomocników następnie należy dołączyć odpowiedni pomocnika jako kolejny odpowiedzi lub po prostu użyć ActionView::Rendering#view_context:

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

Aha! Nie zdawałem sobie sprawy z tego, że 'String' ma pewną liczbę mnogą. Wybrałem tę odpowiedź, ponieważ nie wiąże się z tym, że wprowadzam pomocników do kontrolera. Dzięki! –

+0

Warto wyjaśnić, że nie jest to natywna metoda Ruby, a raczej 'String # pluralize' jest metodą, która Railsa monkeypatches na klasy' String'. –

7

Domyślnie metoda pluralize jest dostępna tylko w Twoich widokach. Aby użyć go w sterowniku, umieścić to na szczycie swojej klasy kontrolera:

include ActionView::Helpers::TextHelper 

jak

# app/controllers/cutomers_controller.rb 

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

    def index 
    etc. ... 
+0

Ta odpowiedź jest prawidłowa, jednak , Wolałbym nie ładować pomocników widoku do kontrolera. Zapewniasz jednak dobre wyjaśnienie, więc +1 –

+0

Zgadzam się, że inne odpowiedzi są lepsze. :) –

4

Można zadzwonić pluralize pomocnika z:

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

lub

# app/controllers/cutomers_controller.rb 

class CustomersController < ApplicationController 
    include ActionView::Helpers::TextHelper 
Powiązane problemy