【问题标题】:Rails Money gem - block users from entering cents/pennies/subunitsRails Money gem - 阻止用户输入美分/便士/子单位
【发布时间】:2015-06-07 05:10:36
【问题描述】:

我在我的 Rails 4 应用中使用 money-rails。

我显示我的货币化属性没有美分。我希望用户只输入整美元/英镑的金额(所以不是 100 是 1 美元,而是 100 美元)。

在我的表单中,我问用户:

        <%= par.input :participation_cost_pennies, label: false, placeholder: 'Whole numbers only', :input_html => {:style => 'width: 250px; margin-top: 20px', class: 'response-project'} %>

在我的节目中,我有:

   <%= money_without_cents_and_with_symbol @project.scope.participant.participation_cost  %>

我想知道如何将 .00 添加到用户在表单中输入的任何内容,或者最好将输入的值设为美元金额而不是美分金额。有人知道怎么做吗?

我在 money.rb 初始化器中删除了美分:

config.default_format = {
     :no_cents_if_whole => nil,

【问题讨论】:

    标签: ruby-on-rails money-rails


    【解决方案1】:

    在处理金钱时,我喜欢在我的数据库中使用DECIMAL 而不是INTEGERS

    在您的迁移中,执行以下操作:

    add_column :items, :price, :decimal, :precision => 8, :scale => 2
    # precision is the total amount of digits
    # scale is the number of digits right of the decimal point
    

    在 Rails 中,:decimal 类型返回为BigDecimal,非常适合计算价格。

    如果你坚持使用整数,你将不得不在任何地方手动转换为BigDecimals。

    要打印价格,请使用:

    number_to_currency(price, :unit => "$")
    #=> $1,234.01
    

    看看 http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_to_currency

    https://stackoverflow.com/a/1019972/1380867

    【讨论】:

    • 嗨,BigDecimal 会阻止用户输入美分或便士吗?
    • 不,相反,BigDecimal 是 Decimal,所以它允许您输入点“。”将钱分成几美分或几美分,这就是:scale 出现的地方刻度是小数点右边的位数
    • 那么我如何阻止人们进入.00?我希望他们输入 100,这意味着 100 美元
    • 对于 $100,他们将输入 100,对于 $100.50,他们将输入 100.50他们不需要点,除非他们想输入美分
    猜你喜欢
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多