Ich habe dieses Bearbeitungsformular.
Wenn ich jedoch etwas wie 1,5 speichere, möchte ich es als 1,50 anzeigen.
Wie könnte ich das mit dem Formularhelfer machen? <%= f.text_field :cost, :class => 'cost' %>
ruby-on-rails
ruby
ruby-on-rails-3
forms
leonel
quelle
quelle
|| 0
verhindert, dass HTML5-Platzhalterwerte angezeigt werden, es sei denn, der Benutzer löscht den Wert. Das Löschen des Felds kann auch Probleme mit der numerischen Validierung verursachen (da ein leeres Wertattribut vorhanden ist, wenn Sie kein Wertattribut wünschen ). Nichts, was ein wenig JS nicht reparieren kann, aber es scheint, dass Rails in diesem Fall ein bisschen schlauer sein sollte.Alternativ können Sie die Formatzeichenfolge verwenden
"%.2f" % 1.5
. http://ruby-doc.org/docs/ProgrammingRuby/html/ref_m_kernel.html#Kernel.sprintfquelle
Dafür verwende ich den Formatierer number_to_currency. Da ich in den USA bin, funktionieren die Standardeinstellungen für mich einwandfrei.
<% price = 45.9999 %> <price><%= number_to_currency(price)%></price> => <price>$45.99</price>
Sie können auch Optionen übergeben, wenn die Standardeinstellungen für Sie nicht funktionieren. Dokumentation zu verfügbaren Optionen unter api.rubyonrails.org
quelle
Rails verfügt über eine Hilfsmethode number_to_currency , die möglicherweise besser zu Ihrem spezifischen Anwendungsfall passt.
quelle
number_to_currency
führt zu einer formatierten Zeichenfolge, die Rails nicht in einen Float umwandeln kann.number_with_precision
ist wahrscheinlich die bessere Option.price = "$3.99"; price.slice!("$"); puts price.to_f => 3.99
Es hängt nur von der gewünschten Benutzererfahrung ab. Einige möchten möglicherweise die Möglichkeit, ein Dollarzeichen in das Eingabefeld einzufügen. Ich weiß, ich mag die Option.