首页 > 解决方案 > 在长生不老药中访问中间结果

问题描述

我有以下代码,我想有人想使用管道,但我不知道如何使用 - 我尝试了很多不同的方法,但似乎我缺少对管道如何工作的关键理解。无论如何:以下代码可以满足我的要求:

项目 has_many budget_itens/work_items

def show(conn, %{"id" => id}) do
    project = Clients.get_project!(id)
    project = Map.put_new(project, :budget, total_budget(project.budget_items))
    project = Map.put_new(project, :budget_used, budget_used(project.work_items))
    project = Map.put_new(project, :budget_remaining, project.budget - project.budget_used)

    changeset = Clients.change_budget_item(%BudgetItem{project_id: project.id})
    render(conn, "show.html", project: project, changeset: changeset)
  end

有什么帮助吗?

标签: elixirphoenix-framework

解决方案


根据文档,管道操作员|>/2确实

将左侧的表达式作为右侧函数调用的第一个参数引入。

也就是说,project建设可能会完成

project = Clients.get_project!(id)

total = total_budget(project.budget_items)
used = budget_used(project.work_items)

project =
  project
  |> Map.put_new(:budget, total)
  |> Map.put_new(:budget_used, used)
  |> Map.put_new(:budget_remaining, total - used)

推荐阅读