number_with_precision价格

时间:2014-03-26 18:56:32

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

我知道number_to_currency,但希望使用number_with_precision为数据库中的某些产品输出价格

我有一个prices存储在db中,其列类型为decimal precision: 10, scale: 2。价格存储为3.002.99

输出价格时遇到问题 - 它以2.99价格正确输出,但只为其他

输出3.0

您是否有任何关于如何使所有数字显示两位小数的信息,无论其值如何?

谢谢!

这是我的代码:

#app/models/feature.rb
def price=(price)
    number_with_precision price
end

3 个答案:

答案 0 :(得分:2)

您可以在precision选项中指定小数点后的位数:

<%= number_with_precision(price, precision: 2) %>

number_with_precision来自ActionView::Helpers::NumberHelper模块。要在没有此助手的情况下使用它,您需要包含此模块:

class MyClass
  include ActionView::Helpers::NumberHelper

  def price_to_number(price)
    number_with_precision(price, precision: 2)
  end
end

答案 1 :(得分:2)

在您的情况下,实际上并不需要更复杂的方法。只需使用Ruby:

'%.2f' % price
# e.g:
'%.2f' % 3 #=> "3.00"

答案 2 :(得分:-1)

答案是:

#app/models/feature.rb
class Feature < ActiveRecord::Base
  include ActionView::Helpers::NumberHelper

  def price
     number_with_precision read_attribute(:price), precision: 2
  end
end