我有一个带有输入(price
)的表单,用户填写的值为:12,50
或110,90
(法国价格)。
所以在控制器中我做:@quote = current_user.company.quotes.build!(params[:quote])
问题在于rails以US
方式使用小数。因此,它会以价格12.00
或111.90
那么我怎么告诉rails实际考虑欧洲版的小数?
感谢。
更新
解决方案是将此方法添加到Quote
模型。
def price=(data) write_attribute(:price, data.to_s.gsub(',', '.')) end
这会将,
替换为.
。感谢Olivier提示。
答案 0 :(得分:1)
因为你实际上正在处理小数转换为十进制12,50 - > 12.5在存储之前,您可以轻松地对其进行任何算术运算。
它将是params中的一个字符串,因此您可以使用sub替换。您可以通过覆盖setter price=
方法在模型中执行此操作。
在显示时将视图转换为12,50。