Ruby on rails 未定义的方法`从数字到货币';至于;2000年:字符串:
我想用小数来计算价格,而不仅仅是整数 我试图使用getter和setter方法,以便在保存到ddbb之前将输入值更新为currency 以下是我的方法:Ruby on rails 未定义的方法`从数字到货币';至于;2000年:字符串:,ruby-on-rails,ruby,getter-setter,Ruby On Rails,Ruby,Getter Setter,我想用小数来计算价格,而不仅仅是整数 我试图使用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 :f
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 %>
为什么会这样?我不能让它工作
谢谢此方法在
ActionView::Helpers::NumberHelper#number_to_currency
中定义。它给您一个提示,它应该只在视图的上下文中使用
从模型中使用它违反了关注点分离。格式化数据不是您的模型的责任
这应该在视图中完成,或者在视图中出现混乱时使用演示者
<%= f.input :format_price, value: number_to_currency(instance.format_price) %>
此方法在
ActionView::Helpers::NumberHelper#number_to_currency
中定义。它给您一个提示,它应该只在视图的上下文中使用
从模型中使用它违反了关注点分离。格式化数据不是您的模型的责任
这应该在视图中完成,或者在视图中出现混乱时使用演示者
<%= f.input :format_price, value: number_to_currency(instance.format_price) %>
因为您是用字符串参数调用它的?请阅读此内容并在适当的位置使用它。但是指定的位置是什么?它是视图帮助器方法,您不应该在控制器内调用它。我没有接触控制器,仅使用模型和视图,因为您使用字符串参数调用它?请阅读此内容并在适当的位置使用它。但是指定的位置是什么?这是一个视图帮助器方法,您不应该在控制器内部调用它。我不接触控制器,仅使用模型和视图。嗨,Pierre,感谢您的响应。问题是,由于我的列是一个整数,如果我将该帮助器放在视图中,它仍将保存为整数。所以这就是为什么我需要使用虚拟属性来更改值,我对此非常着迷。为什么你不能将其存储为浮点?因为我读过浮点数学对价格不准确。那么:十进制类型呢?为什么不,但绝对不是stringHi Pierre,谢谢你的回复。问题是,由于我的列是一个整数,如果我将该帮助器放在视图中,它仍将保存为整数。所以这就是为什么我需要使用虚拟属性来更改值,我对此非常着迷。为什么你不能将其存储为浮点?因为我读过浮点数学对价格不准确。那么:十进制类型呢?为什么不,但绝对不是字符串