2

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

    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 %>

请帮忙

4

3 回答 3

3

由于您正在处理发票,您不想保存这些值吗?

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

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

end

检查此链接以获取详细示例。

于 2013-09-30T10:39:32.280 回答
0
  1. 好的做法是在控制器中准备实例变量
  2. 在那里你也可以赚到钱
于 2013-09-30T10:34:35.237 回答
0

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

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

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

例如

Class Cart ...

  def total_cost
    self.subtotal + self.shipment_charges
  end

end

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

于 2013-09-30T10:39:55.307 回答