Rails:使用计算值

时间:2013-09-30 10:20:33

标签: ruby-on-rails ruby-on-rails-3

我有两个计算值小计运费,第三个总计,这是前两个的总和。我想在视图中显示它们中的所有三个。我怎样才能做到这一点。我现在正在做的事似乎并不好。

    Subtotal: <%= @cart.subtotal %>
    Shipment: <%= @cart.shipment_charges %>
    Total: <%= @cart.subtotal + @cart.shipment_charges %>

最后一个是再次调用方法来获得最终总数。这是什么最好的做法?

同样在视图中存储这样的结果也看起来很糟糕

    <%- subtotal = @cart.subtotal %>
    <%- shipment_charges = @cart.shipment_charges %>
    ...
    Total: <%= subtotal + shipment_charges %>

请帮忙

3 个答案:

答案 0 :(得分:3)

由于您正在处理发票,是否要保存这些值?

如果没有,您应该使用虚拟属性:

class Invoice < ActiveRecord::Base
  def total
    subtotal + shipment_charges
  end

end

检查this link以获取详细示例。

答案 1 :(得分:0)

  1. 良好做法是在控制器中准备实例变量
  2. 你可以在那里赚钱。

答案 2 :(得分:0)

我不相信你所做的是不好的做法。通常,您应该尝试将业务逻辑排除在视图之外,但您在此处所做的只是简单地呈现数据。

除非您打算将Total发送回数据库,否则这不是什么大问题。

如果您在其他地方使用小计,shipment_charges和total,则可以将它们声明为模型上的计算字段。

e.g。

Class Cart ...

  def total_cost
    self.subtotal + self.shipment_charges
  end

end

这样你就可以在你的视图中调用@ cart.total_cost