【问题标题】:How to specify decimal precision in a simple_form number field (Rails)如何在 simple_form 数字字段中指定小数精度(Rails)
【发布时间】:2012-07-09 18:24:07
【问题描述】:

所以我在数据库中有一个精度为 2 的小数字段,用于表示货币。它工作正常,除非最后一个小数位以 0 结尾,即。 799.90。当它显示在字段中时,它将改为将其剥离为 799.9。我知道number_with_precision,但我无法将那个辅助方法与 simple_form 数字字段一起使用,因为它只需要一个符号和 html 选项作为参数。

然后我想我需要创建一个自定义输入来扩展 simple_form 的默认 number_field,但语法似乎没有很好的文档记录,所以我无法弄清楚如何调用 number_with_precision在这个自定义输入的定义中。

我基本上想用formtastic 做这个问题的OP Formtastic number field with decimal precision? 想要的。谢谢!

【问题讨论】:

    标签: ruby-on-rails decimal simple-form


    【解决方案1】:

    如果您可以使用 formtastic 来做到这一点,根据我的经验,您通常可以使用 Simple Form 来做到这一点。试试这个:

    <%= f.input :sales_price, :input_html => {value: number_with_precision(f.object.sales_price, precision: 2) } %>
    

    如果使用 input_field,则不需要:input_html

    <%= f.input_field :sales_price, value: number_with_precision(f.object.sales_price, precision: 2) %>
    

    【讨论】:

    • 不走运。该值已正确加载,但如果最后一个小数位为 0,则不尊重精度。知道如何在不使用 JavaScript 的情况下强制它显示 0 吗?
    • 你试过只做 2) %> 吗?我的例子和格式都正确,听起来你发生了一些奇怪的事情。
    • 我找出了哪里出错了——因为我使用的是f.input_field,所以我不必在 input_html 哈希中传递value: number_with_precision...——我可以直接设置它。现在可以使用了 - 谢谢!
    • 重要提示! 如果您使用具有 comma 作为默认分隔符的区域设置,则必须指定 dot 作为分隔符,因为逗号对新的 HTML5 数字输入(simple_form 使用)的支持不够好 (aeyoun.com/posts/html5-input-number-localization.html)
    【解决方案2】:

    使用输入step属性:

    <input type="number" step="0.01">
    

    或使用简单形式:

    <%= f.input :sales_price, input_html: { step: 0.0 } %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 2014-07-15
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      相关资源
      最近更新 更多