Wie man eine Zahl in einem Ruby on Rails-Controller formatiert, funktioniert number_with_delimiter nur in Sichten

8

Ich möchte eine Zahl in einem Controller formatieren, bevor Sie sie in eine Zeichenfolge einfügen. Die Funktion number_with_delimiter () funktioniert jedoch nicht in einem Controller. Ich brauche die Zeichenfolge an ein Javascript-Plugin zu senden.

Ich könnte den Code in der Ansicht ausführen, aber ich denke, das ist nicht die beste Option.

%Vor%

Gibt es eine alternative Funktion, um das Format von p.price zu ändern?

    
Michael Torfs 29.08.2010, 18:39
quelle

3 Antworten

17

Um Ihre Frage direkt zu beantworten, fügen Sie Folgendes in Ihren Controller ein (in der Regel oben, unterhalb der Deklaration class ):

%Vor%

Sie können dieses Modul auch in das Modell einschließen (unabhängig von der Klasse p ) und dann eine Funktion schreiben, um den formatierten Preis zurückzugeben.

Der beste Platz für Code wie diesen ist jedoch ein Helfer, nicht der Controller. Der Helfer würde aus der Sicht aufgerufen werden. Ihr Controller sollte so kurz wie möglich sein und keine Ansichtslogik enthalten.

    
wuputah 29.08.2010, 18:46
quelle
10

Rufen Sie einfach die zugrunde liegende Methode ActiveSupport::NumberHelper direkt auf:

%Vor%

Dadurch vermeiden Sie unnötigerweise alle ActionView-Methoden in Ihrem Objekt.

    
fotinakis 21.09.2015 04:55
quelle
1

Rails-Controller greifen auf denselben Kontext zu, den der ActionView-Renderer mit der view_context -Eigenschaft ausführt, ohne mehrere View-Hilfsmodule mischen zu müssen:

%Vor%

Dies hat den Vorteil, dass Sie auf alle Ansichtshelfer sowie auf jede spezielle Konfiguration, die Sie eingerichtet haben, Zugriff haben (z. B. i18n-Einstellungen).

    
maniacalrobot 15.02.2016 19:54
quelle

Tags und Links