11
votes

Comment formater un numéro dans un contrôleur Ruby sur Rails, Number_With_DelItre fonctionne uniquement dans des vues

Je souhaite formater un numéro dans un contrôleur avant de l'insérer dans une chaîne. Mais la fonction numéro_with_delimiter () ne fonctionne pas dans un contrôleur. J'ai besoin de la chaîne pour envoyer à un plugin JavaScript.

Je pourrais exécuter le code dans la vue, mais je suppose que ce n'est pas la meilleure option. xxx

est là une fonction alternative permettant de modifier le format de p.price?


1 commentaires

Vous pouvez vous référer à ma réponse ici Stackoverflow.com/Questtions/4467697/...


3 Réponses :


24
votes

Pour répondre directement à votre question, incluez les éléments suivants dans votre contrôleur (généralement près du sommet, sous la déclaration ): xxx

Vous pouvez également inclure ceci module dans le modèle (quelle que soit la classe p est), puis écrivez une fonction pour renvoyer le prix formaté.

Le meilleur endroit pour le code comme celui-ci, cependant, est dans une assistante , pas le contrôleur. L'assistant serait appelé de la vue. Votre contrôleur doit être aussi court que possible et ne pas inclure de la logique de vue du tout.


1 commentaires

Ok, merci beaucoup .. Grand conseil! Je vais vraiment le déplacer à un assistant.



17
votes

Appelez simplement le sous-jacent ActiveSupport :: NumberHelper Méthode directement: XXX

Ceci évite, y compris toutes les méthodes d'ActionView dans votre objet inutilement. < / p>


0 commentaires

3
votes

Les contrôleurs de rails ont accès au même contexte que le rendu d'actionView utilise la propriété View_Context CODE> sans avoir à mixer plusieurs modules d'aide à la vue:

class BaseController < ApplicationController                                                                                                      
  def index
    # Accessing view the context
    logger.info view_context.number_to_currency(34)
  end
end


0 commentaires