用BigDecimal中的点替换逗号

时间:2014-04-05 15:30:59

标签: ruby-on-rails ruby-on-rails-4

我想如果用户输入“100,50”或“100.50”是同一件事。 100美元和50美分。

before_validation :strip_commas

  def strip_commas
    unless self.total_less_tax.blank?
        self.total_less_tax = total_less_tax.tgsub(",", ".").to_f
    end
  end

但我收到此错误

NoMethodError (undefined method `gsub' for #<BigDecimal:7fc1ba371f08,'0.1E6',9(18)>):
  app/models/invoice.rb:17:in `strip_commas'
  app/controllers/invoices_controller.rb:35:in `update'

1 个答案:

答案 0 :(得分:1)

你可以在字符串上调用gsub方法,但是你在Big Decimal上调用它。所以试试这个

def strip_commas
    unless self.total_less_tax.blank?
        self.total_less_tax = total_less_tax.to_s.gsub(",", ".").to_f
    end
  end