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