0

用户输入货件详细信息后,我必须在结帐页面上显示总价。我的购物车模型有一个 total_price 方法,我在视图上使用它来显示总价,例如

    <%= number_to_currency(@cart.total_price) %>

现在我想显示总计,即 total_price + shipping。出货量是使用三个参数重量状态供应商来计算的。假设stateprovider现在是不变的,我们只需要担心weight。因此,为此我在购物车模型中有一个 shipping_rate 方法,类似于。

    def shipment_rate(weight, provider, state) 
      # calculation code here
    end

在这样的视图中使用此方法是否很好:

    <%- shipment = cart.shipment_rate(weight,'UPS','AK')%> 

为此,我还必须提供购物车物品的总重量,我可以使用 @cart.total_weight 方法进行计算。Rails 这样做的方法是什么?从视图中调用这些方法是否很好,如下所示:

    <%- total = @cart.total_price %>
    <%- weight = @cart.total_weight %>
    <%- shipment = cart.shipment_rate(weight,'UPS','AK')%>
    ...

然后在同一个视图中使用下面的这些值

    <span>Amount: <%= number_to_currency total %></span>
    <span>Shipment: <%= number_to_currency shipment %></span>
    <span>Total: <%= number_to_currency total + shipment %></span> 
4

1 回答 1

1

我会把它全部放回模型中,如下所示:

<span>Amount: <%= number_to_currency @cart.subtotal %></span>
<span>Shipment: <%= number_to_currency @cart.shipping %></span>
<span>Total: <%= number_to_currency @cart.total %></span> 

小计是您现在所说的“total_price”,而“total”是小计+运费

毕竟 - 购物车已经知道自己的重量以及如何计算运费 - 所以你只需要询问它的运费。如果需要,您可以将值传递给它,例如:

<span>Amount: <%= number_to_currency @cart.subtotal %></span>
<span>Shipment: <%= number_to_currency @cart.shipping(provider,state) %></span>
<span>Total: <%= number_to_currency @cart.total(provider,state) %></span> 
于 2013-09-30T05:26:34.347 回答