嗨,我们正在使用rails 3 ruby 1.9环境玩RoR 我被卡住了
nil无法强制进入BigDecimal
错误
我需要获得购物车内产品的总成本 我知道问题在哪里(我认为),但我几乎做了所有事情
车/ show.html.rb
<div class="cart_title" >Your Cart</div>
<table>
<% for item in @cart.line_items %>
<tr>
<td><%= item.quantity %>×</td>
<td><%= item.product.title %></td>
<td class="item_price" ><%= number_to_currency(item.total_price) %></td>
</tr>
<% end %>
<tr class="total_line" >
<td colspan="2" >Total</td>
<td class="total_cell" ><%= number_to_currency(@cart.total_price) %></td>
</tr>
</table>
<%= button_to 'Empty cart', @cart, :method => :delete,
:confirm => 'Are you sure?' %>
模型/ line_item.rb
def total_price
line_items.to_a.sum { |item| item.total_price }
end
模型/ cart.rb
def total_price
product.price * quantity
end
我的第二个选择是
def total_price
if product.price
product.price * quantity
else
product.price = "0.0".to_d
end
end
但仍然无法正常工作
感谢我们更多的力量!
答案 0 :(得分:0)
问题出在您的cart.rb
型号中:
def total_price
product.price * quantity
end
您的购物车中没有单品;您的购物车中有许多产品。您需要汇总购物车中所有订单项的所有价格。 (如果在客户承诺以旧价格购买产品后产品价格发生变化,您希望直接使用订单项而不是产品。)
你将如何解决这个问题取决于你的模型的细节,但你会找到这样的东西:
def total_price
line_items.to_a.each(&:total_price).sum
end
这将对total_price
集合中的每个项目运行line_items
方法,构建所有项目的列表,然后sum
列表。