在视图中计算总​​价

Calculate total price in a view

我是 elixir 的新手,我想做的是计算用户购物车中商品的总价并将其显示在购物车页面中。我写了一个函数,它混合了我在 Internet 上找到的函数。如果有任何帮助,我将不胜感激!

这是我的 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

最后只显示“总金额:”这部分,没有计算出的含运费。

  1. 如果你能在视图中看到“Total amount:”部分,则视图正常。
  2. <%= total_price(@books) %>应该是里面的if子句。
  3. 你想计算一个总数,这是一个数字,而不是地图。所以减少数量。

话虽如此,以下内容应该有效。

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