Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未定义的方法`从数字到货币';至于;2000年:字符串:_Ruby On Rails_Ruby_Getter Setter - Fatal编程技术网

Ruby on rails 未定义的方法`从数字到货币';至于;2000年:字符串:

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

我想用小数来计算价格,而不仅仅是整数

我试图使用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 %>
为什么会这样?我不能让它工作


谢谢

此方法在
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,谢谢你的回复。问题是,由于我的列是一个整数,如果我将该帮助器放在视图中,它仍将保存为整数。所以这就是为什么我需要使用虚拟属性来更改值,我对此非常着迷。为什么你不能将其存储为浮点?因为我读过浮点数学对价格不准确。那么:十进制类型呢?为什么不,但绝对不是字符串