ruby-on-rails - Rails - 在 Getter 中将数字格式设置为货币格式

标签 ruby-on-rails currency

我正在制作一个简单的零售商务解决方案,其中有 价格 在几个不同的模型中。这些价格促成了 总价 .想象一下为您的酸奶选择浇头多付 0.30 美元。

当我设置 price字段到

t.decimal   :price, precision:8, scale:2

数据库存储6.506.5 .我知道在标准的 Rails 方式中,您调用 number_to_currency(price)获取 View 中的格式化值。我需要以编程方式调用 price字段以及格式化的字符串,即 $6.50 一些不直接属于 View 的地方。此外,我的需求很简单(没有货币转换等),我更喜欢在模型中对价格进行通用格式化,而无需在 View 中重复调用 number_to_currency。

有没有一种好方法可以修改我的价格 getter ,使其始终返回带美元符号的小数点后两位,即调用时为 6.50 美元?

提前致谢。

更新

谢谢大家。

我选择使用亚历克斯的方法,因为仅仅为了格式化数字而进行包含似乎非常“骇人听闻”。使用他的方法,我做了:
  def price_change=(val)
      write_attribute :price_change, val.to_s.gsub(/[\$]/,'').to_d
  end

  def price_change
    "$%.2f" % self[:price_change]
  end

干杯。

更新 2

买者自负。一旦你这样做了,你就失去了对数字进行操作的能力,因为它现在是一个字符串。

请注意是否有人面临与我相同的问题。

最佳答案

只需在模型中添加一个方法,该方法的名称类似于数据库中的属性,例如:

def price
   "$%.2f" % self[:price]
end

这使您可以完全控制格式或使用 Rails 提供的辅助方法
def price
   ActionController::Base.helpers.number_to_currency(self[:price])
end

这应该可以解决问题。
希望能帮助到你!

关于ruby-on-rails - Rails - 在 Getter 中将数字格式设置为货币格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10053967/

相关文章:

ruby-on-rails - Rails money-rails gem 在货币化上获得未定义的方法

ruby-on-rails - 使用继承资源rails创建评论时设置当前用户

ruby-on-rails - 自动需要 gem

c# - WPF 货币符号

Java 货币转换器 GUI

regex - 从字符串中获取价格值

ruby-on-rails - Heroku 预编译破坏了我的 JavaScript。没有预编译它会给出 500 服务器错误?

ruby-on-rails - Rails 对多个字段使用 searchkick

ruby-on-rails - 为什么带有 nginx 和自签名 SSL 证书的 Rails 无法工作?

python - 将列表转换为可分割的 float