我有一个名为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?
答案 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之类的东西,它会为你增加必要的读者和作家,以便用美元获取货币价值,并为你节省一些麻烦。