如何将美分转换为Rails中所有下拉值的美分

时间:2015-12-09 12:15:17

标签: ruby-on-rails

我有一个名为price_in_cents的字段用于材料表。 我想在下拉列表中将price_in_cents的所有值显示为美元。

以下是代码:

  <%= select_tag 'price_in_cents', "<option value='blank'>(empty)</option>"+options_for_select(Material.pluck(:price_in_cents).compact.uniq),include_blank: true, class: 'form-control' %>

实际上是price_in_dollars = self.price_in_cents/(100*100).to_d

例如,价格10200必须显示为1.02。

如何在下拉列表中写入或提及价值为price_in_cents /(100 * 100).to_d?

3 个答案:

答案 0 :(得分:1)

您可以尝试这样:

 <%= select_tag 'price_in_cents', "<option value='blank'>(empty)</option>"+options_for_select(Material.pluck('price_in_cents/(100*100)').compact.uniq),include_blank: true, class: 'form-control' %>

这里,在获取记录值的同时执行操作。如果要将其转换为整数,则可以将其写为:

Material.pluck('CAST(price_in_cents/(100.0*100.0) as decimal)').compact.uniq

我给出了postgresql的例子

答案 1 :(得分:0)

您可能希望将此转换逻辑保留在您的视图之外 - 这听起来像Decorator Pattern适合的情况,并建议查看像Draper这样的宝石。您可以向price_in_dollars添加MaterialsDecorator方法,并在视图中使用装饰@materials

或者,如果您正在严格查找这些值的数组,则Material.prices_in_dollars等类方法可能是合适的。

答案 2 :(得分:0)

如果你正在处理钱,我建议你使用类似money-rails之类的东西,它会为你增加必要的读者和作家,以便用美元获取货币价值,并为你节省一些麻烦。