簡體   English   中英

在貨幣參數中允許逗號或點

[英]Allowing both comma or dot in currency parameter

我的模型中有這個:

  monetize :advance_amount_cents, allow_nil: true
  monetize :rental_amount_cents, allow_nil: true

我使用 AutoNumeric 來顯示貨幣。 它在參數中像這樣將它發送回控制器:

'rental_amount' = "2050.12"

從模型返回此錯誤:

activerecord.errors.models.rental_period.attributes.rental_amount.invalid_currency

當我可以用逗號而不是小數點作為小數點發送貨幣時,它接受貨幣。 這里的最佳做法是什么? 理想情況下,我希望所有貨幣化的屬性都接受任何內容作為小數點分隔符、逗號或點。 這也是貨幣化似乎是這樣做的:

pry(main)> Monetize.parse "2050.12"
=> #<Money fractional:205012 currency:USD>
pry(main)> Monetize.parse "2050,12"
=> #<Money fractional:205012 currency:USD>

這是完美的。 如何配置我的模型(或一般的 Monetize gem)以接受兩者作為參數(點或逗號)。

希望這對某人有用。

型號:

monetize :rental_amount_cents, allow_nil: true

查看:

  = f.input :rental_amount, label: 'Rental amount' do
    .input-group
      = text_field_tag :rental_amount, @rental_period.rental_amount, class: 'form-control', id: "#{@rental_period.new_record? ? '' : (@rental_period.id.to_s + '_')}rental_amount_rate_rendered"
      = f.hidden_field :rental_amount, class: 'rate-input'
      %span.input-group-addon €

Javascript設置:

$('[id$=rate_rendered]').add('.flex-rate').autoNumeric('init', settings.money_nosign).on('keyup', function() {
  var $hid;
  $hid = $(this).parent().find('input.rate-input');
  if ($(this).autoNumeric('get') !== '') {
    return $hid.val($(this).autoNumeric('get').replace('.', ','));
  } else {
    return $hid.val(0);
  }
});

在我的設置中(只有相關部分:

window.settings = {
  money_nosign: {
    aDec: ',',
    aSep: '.',
    vMin: '-999999999.99'
  }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM