Rails:更改params中属性的值

时间:2012-03-03 19:50:19

标签: ruby-on-rails forms decimal

我有一个带有输入(price)的表单,用户填写的值为:12,50110,90(法国价格)。

所以在控制器中我做:@quote = current_user.company.quotes.build!(params[:quote])

问题在于rails以US方式使用小数。因此,它会以价格12.00111.90

保存报价

那么我怎么告诉rails实际考虑欧洲版的小数?

感谢。

更新

解决方案是将此方法添加到Quote模型。

def price=(data) write_attribute(:price, data.to_s.gsub(',', '.')) end

这会将,替换为.。感谢Olivier提示。

1 个答案:

答案 0 :(得分:1)

因为你实际上正在处理小数转换为十进制12,50 - > 12.5在存储之前,您可以轻松地对其进行任何算术运算。

它将是params中的一个字符串,因此您可以使用sub替换。您可以通过覆盖setter price=方法在模型中执行此操作。

在显示时将视图转换为12,50。