elixir - 计算视图中的总价
问题描述
我是 elixir 的新手,我想做的是计算用户购物车中物品的总价格并将其显示在购物车页面中。我写了一个函数,它是我在互联网上找到的函数的混合体。我将不胜感激任何帮助!
这是我的购物车 index.html.eex
<h1>Your Cart</h1>
<%= if @books do %>
<ul>
<%= for book <- @books do %>
<li>
<%= book.title %>: £<%= book.original_price %>
<%= link "X", to: Routes.cart_path(@conn, :delete, book_slug: book.slug), method: :delete %>
</li>
<% end %>
</ul>
<% else %>
<p>No books in your cart</p>
<% end %>
<%= total_price(@books) %>
还有cart_view
def total_price(books) do
shipping = 5.99
price_with_shipping =
Enum.reduce(books, fn book, acc ->
%{total_amount: book.original_price + acc.total_amount + shipping}
end)
|> Map.get(:total_amount)
text = "Total amount: #{price_with_shipping}"
end
最后,它只显示这部分 - “总金额:”,没有计算出的运费价格。
解决方案
- 如果您可以在视图中看到“总金额:”部分,则视图很好。
<%= total_price(@books) %>
应该是insideif
子句。- 你想计算一个总数,它是一个数字,而不是一张地图。所以减少数量。
也就是说,下面应该工作。
def total_price(books) do
shipping = 5.99
price_with_shipping =
Enum.reduce(books, 0, fn %{original_price: price}, acc ->
price + acc + shipping
end)
"Total amount: #{price_with_shipping}"
end
推荐阅读
- server-side-rendering - 使用 Vue 进行服务器端渲染
- sql - 如何获取特定数据的记录
- android - 应用程序未安装在您的设备上的第一个程序错误
- java - JXBrowser 无法关闭 JFrame
- javascript - 时间戳到日期格式和反向
- php - WP_Order_Query - 'LIMIT' 不起作用,可能是什么原因?
- mysql - 如何将 MySQL 8 数据库迁移到 MariaDB 10.5?
- javascript - Vue CSS淡入/淡出视频过渡
- pgp - GPG - 加密文件夹内容的命令 - 所有文件
- firebase - 在 Firestore 中执行复合查询时出错