Ruby ceil不适用于我的方法数据,仅在视图中

时间:2013-07-24 20:52:31

标签: ruby-on-rails ruby

我在控制器的方法中有这样的代码用于舍入(仅更高)并显示数字的ceil部分:

    @constr_num.each do |cn|
      non_original_temp_var2 = get_non_tecdoc_analogs(cn.ARL_SEARCH_NUMBER, @article.supplier.SUP_BRAND, false)
      non_original << non_original_temp_var2
    end
    @non_original = non_original.flatten!
    @non_original.each do |n_original|
      n_original.price = my_round2(n_original.price * markup_for_user)
    end
  def my_round2 a
    res = (a / 1.0).ceil * 1
    res
  end

但由于某些原因,我看到每个价格逗号后面都是0,例如:5142.0但它必须是5142

主要奇怪的是,如果我试着写:

n_original.price = 123

在视图中我看到123.0
发生了什么事?

只有当我在视图中写入时(显示价格时): price.ceil 我看到正常的数字,没有逗号

我错了什么?如何用舍入来计算我的数字(但只有高,例如2.24是3 3.51是4和2.0是2)?因为某些原因我现在因为某些原因而在我的号码后看到逗号和nul,即使我试图在控制器中“硬编码”号码。

2 个答案:

答案 0 :(得分:2)

如何使用next类的succInteger函数?尝试以下内容:

def my_round2 a
  (a.is_a? Integer) ? a : a.to_i.next
end

如果aInteger,则返回a,否则使用Integer方法将其转换为to_i并致电next或{{ 1}}方法就可以了。

参考:http://www.ruby-doc.org/core-2.0/Integer.html

我想我错过了你问题的第二部分。为了避免小数位,我想你必须像Philip Hallstrom所建议的那样使用succ

答案 1 :(得分:1)

我的猜测是你的价格字段是Float。默认情况下,浮点数将以小数点打印。您需要先将其转换为Integer(例如在my_round2方法中)或在视图任务中将.to_i转换为输出。