我想把价格用小数,而不只是整数。
我尝试使用getter和setter方法,以便在保存到ddbb之前将输入值更新为currency。
这是我的方法:
before_validation :format_price
def format_price
self.min_price
end
def format_price=(amount)
self.min_price = amount.number_to_currency
end
这是我的意见:
<%= f.input :format_price %>
我的模型中的列名为min_price
,它是一个整数列(我想保存新值)。
当我把2000作为价格并保存时出现问题,我收到以下错误:
NoMethodError - undefined method `number_to_currency' for "2000":String:
为什么会这样?我无法让它发挥作用。
谢谢
答案 0 :(得分:3)
此方法在ActionView::Helpers::NumberHelper#number_to_currency
中定义。它给你一个提示,它应该只在视图的上下文中使用。
从模型中使用它会违反关注点。您的模型不负责格式化数据。
这应该在视图中完成,或者在视图中出现问题时使用演示者。
<%= f.input :format_price, value: number_to_currency(instance.format_price) %>