Rails 3. Comment afficher deux chiffres après la virgule dans le formulaire d'édition?
J'ai ce formulaire de modification.
Mais quand je stocker quelque chose comme 1.5, je voudrais l'afficher comme 1.50.
Comment pourrais-je le faire avec le formulaire de l'aide? <%= f.text_field :cost, :class => 'cost' %>
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
number_with_precision
helper. Voir la doc.Exemple:
À l'intérieur de vous helper form:
BTW, si vous voulez vraiment faire preuve d'un certain prix, l'utilisation
number_to_currency
, même la page de doc (Dans un formulaire contexte, je garderaisnumber_with_precision
, vous ne voulez pas gâcher avec les symboles de l'argent)|| 0
permettra d'éviter toute HTML5 valeur de l'espace réservé d'être affiché, sauf si l'utilisateur efface la valeur. Aussi, l'effacement de la zone peut entraîner des problèmes numériques de validation (parce qu'il y a un vide de la valeur de l'attribut lors de ce que vous voulez, c'est aucun de la valeur de l'attribut). Rien qu'un peu de JS ne peut pas réparer, mais il semble que les Rails devraient être un peu plus intelligent dans ce cas.Alternativement, vous pouvez utiliser la chaîne de format
"%.2f" % 1.5
. http://ruby-doc.org/docs/ProgrammingRuby/html/ref_m_kernel.html#Kernel.sprintfPour cela, j'utilise la number_to_currency formateur de table. Depuis que je suis aux états-unis les paramètres par défaut fonctionnent très bien pour moi.
Vous pouvez également passer dans les options si les valeurs par défaut ne fonctionnent pas pour vous.
La Documentation sur les options disponibles à api.rubyonrails.org
Rails a un number_to_currency méthode d'aide qui pourrait vous convenir cas d'utilisation spécifiques mieux.
number_to_currency
résultats dans une chaîne formatée que les Rails ne peut pas lancer de dos à un flotteur.number_with_precision
est probablement la meilleure option.price = "$3.99"; price.slice!("$"); puts price.to_f => 3.99
, Tout dépend de l'expérience de l'utilisateur que vous souhaitez. Certains souhaiteraient que la possibilité de mettre un signe de dollar dans la zone de saisie. Je sais que j'aime avoir le choix.