J'ai une validation simple: sur ce code, j'ai reçu l'erreur suivante: p> J'ai essayé d'ajouter : p> mais cela n'a pas aidé. P> Qu'est-ce que je manque? P> P>
5 Réponses :
Vous manquerez peut-être que la dépendance ... est la classe numérohelper accessible à votre application? P>
vérifier le Rails officiels Docs P>
Le vrai problème ici est que vous incluez ce module dans la classe, plutôt que de prolonger la classe avec elle.
Les différences sont une inclusion rendra les méthodes disponibles sur l'instance, où l'agrandir fera leur où vous essayez de les utiliser: sur la classe. p>
par exemple méthode Utilisez P>
extend ActionView::Helpers::NumberHelper
@RYAN: Je comprends que, y compris l'intérieur de la classe, est équivalente à définir mes propres méthodes dans cette classe, non? Cela signifie-t-il que je pourrais utiliser auto.number_with_delimiter (...) code>? Lorsque vous placez le
Inclure code> à l'extérieur de la classe, sont toutes des méthodes à l'intérieur
Actionview :: Helpers :: NumberHelper CODE> devient global?
@ Misha: Oui, ils deviendraient mondiaux mais ce n'est généralement pas une bonne idée (TM). La meilleure chose à faire dans ce cas est de étendre code> la classe avec le module.
@RYAN: Comment prolonger la classe code> produit code> avec le module code> NumberHelper code>? N'est-ce pas ce que j'ai fait ci-dessus?
@Misha: Non, vous êtes Inclure code> 'ing le module.
étendre code> est différent.
@RYAN: Je suis confus. Y compris le module dans la classe du modèle est exactement ce que j'ai fait ci-dessus, et cela n'a pas fonctionné. Cela a toutefois fonctionné lorsque j'ai déplacé le inclure code> en dehors de la classe.
Vous devez utiliser EXTEND: P>
Utilisation: C'est bon pour moi p> EXTENDY ACTIONVIEW :: Helpers :: NumberHelper CODE> P>
au lieu d'étendre le module Par exemple: P>
actionview code>. Vous pouvez utiliser des méthodes à partir de
ActiveSupport code> à la place p>
ActiveSupport :: NuméraireHelper :: Number_To_Currency (10000.1234, {Precision: 2, Unité: ''}) Code> P>
Est-ce mieux d'un point de vue de la performance en termes d'utilisation de la mémoire?
bonne réponse, utilisez: p>
ActiveSupportport :: NumberHelper :: Number_To_Delimited (numéro, options = {}) p> blockQuote>