Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 价格的精确数字_Ruby On Rails_Ruby On Rails 4_Ruby On Rails 4.1 - Fatal编程技术网

Ruby on rails 价格的精确数字

Ruby on rails 价格的精确数字,ruby-on-rails,ruby-on-rails-4,ruby-on-rails-4.1,Ruby On Rails,Ruby On Rails 4,Ruby On Rails 4.1,我知道,但希望使用精度为的number\u以db的形式输出某些产品的价格 我有一个存储在db中的prices,它的列类型十进制精度:10,刻度:2。价格存储为3.00和2.99 我在输出价格时遇到问题-对于2.99价格,它输出正确,但对于另一个价格,它只输出3.0 你有关于如何让所有数字显示两位小数的信息吗 谢谢 这是我的密码: #app/models/feature.rb def price=(price) number_with_precision price end 在精度选项中

我知道,但希望使用精度为的
number\u
以db的形式输出某些产品的价格

我有一个存储在db中的
prices
,它的列类型
十进制精度:10,刻度:2
。价格存储为
3.00
2.99

我在输出价格时遇到问题-对于
2.99
价格,它输出正确,但对于另一个价格,它只输出
3.0

你有关于如何让所有数字显示两位小数的信息吗

谢谢

这是我的密码:

#app/models/feature.rb
def price=(price)
    number_with_precision price
end

精度
选项中指定小数点后的位数:

<%= number_with_precision(price, precision: 2) %>

精度
选项中指定小数点后的位数:

<%= number_with_precision(price, precision: 2) %>

在您的案例中,确实不需要更复杂的方法来实现这一点。只需使用Ruby:

'%.2f' % price
# e.g:
'%.2f' % 3 #=> "3.00"

在您的案例中,确实不需要更复杂的方法来实现这一点。只需使用Ruby:

'%.2f' % price
# e.g:
'%.2f' % 3 #=> "3.00"
因此,答案是:

#app/models/feature.rb
class Feature < ActiveRecord::Base
  include ActionView::Helpers::NumberHelper

  def price
     number_with_precision read_attribute(:price), precision: 2
  end
end
#app/models/feature.rb
类功能
#app/models/feature.rb
class Feature < ActiveRecord::Base
  include ActionView::Helpers::NumberHelper

  def price
     number_with_precision read_attribute(:price), precision: 2
  end
end
#app/models/feature.rb
类功能
更新的问题-我想这是我的setter的问题为什么我被否决了?所以你的问题是“输出一个价格…”,你给我们看了一个setter。你能解释一下你想做什么吗?你为什么有那个二传手?我有个二传手来定价格。因此,如果价格被输出,它会自动设置为一个价格——我不明白为什么沃伦特·唐沃蒂会在你问了关于唐沃蒂的问题后,碰巧问了这个问题!你可能在寻找一个getter而不是setter,这样你就可以根据你的喜好格式化输出了吗?更新的问题-我认为这是我的setter的问题为什么我被否决了?所以你的问题是“输出一个价格…”,你给我们看了一个setter。你能解释一下你想做什么吗?你为什么有那个二传手?我有个二传手来定价格。因此,如果价格被输出,它会自动设置为一个价格——我不明白为什么沃伦特·唐沃蒂会在你问了关于唐沃蒂的问题后,碰巧问了这个问题!您是否可能正在寻找一个getter而不是setter,以便将输出格式化为您的首选项?现在您有了一个负责格式化输出数据的模型-这太糟糕了。如果你坚持使用方便的方法,并且考虑到
number\u with\u precision
已经是一种方便的方法(并且是可配置的),这应该是一个助手(或演示者的一部分)。@coreyward,我真的想象不出有人能够按照你解释的方式来阅读它。很抱歉造成混淆,我的目的不是介绍格式化数字的模型,我的目的是展示这个助手方法的用法,因为
NumberHelper
在模型或代码的其他部分中不可用。现在您有了一个负责格式化输出数据的模型-这太糟糕了。如果你坚持使用方便的方法,并且考虑到
number\u with\u precision
已经是一种方便的方法(并且是可配置的),这应该是一个助手(或演示者的一部分)。@coreyward,我真的想象不出有人能够按照你解释的方式来阅读它。很抱歉造成混淆,我的目的不是介绍格式化数字的模型,我的目的是展示此助手方法的用法,因为
NumberHelper
在模型或代码的其他部分中不可用。请注意!永远不要这样做!不要在模型中包含ActionView内容
def price=(value)p='%.2f'%value write_属性(:price,p)end
新人注意!永远不要这样做!不要在模型中包含ActionView内容
def price=(value)p='%.2f'%value write_attribute(:price,p)end
显示小数点后两位数字的完美方式。显示小数点后两位数字的完美方式。