【发布时间】:2016-04-26 22:00:52
【问题描述】:
我正在尝试编写 DRY Elixir,而 Dave Thomas 的书仍在发布中!
您可以在下面看到为 Card 自动生成的 Phoenix 控制器的一部分。在实践中,我有多种产品的行为与Card 完全相同,所以我想概括一下。下面是我的一项努力,但它无法编译,错误为 **{}**。
我很确定自己犯了一个根本性错误,因为我是这门语言的新手(但不是函数式编程)。
alias Api.Card
map = %{"cards" => Card, "books" => Book}
def create(conn, %{"product" => product}) do
# changeset = Card.changeset(%Card{}, card_params)
changeset = map[product].changeset(%map[product]**{}**, card_params)
case Repo.insert(changeset) do
{:ok, product} ->
conn
|> put_status(:created)
|> put_resp_header("location", card_path(conn, :show, card))
# |> render("show.json", card: card)
|> render("new_key.json", id: product.id)
如果你能帮我解决这个问题,请注意我还需要将card_path 转换为变量,但我认为这将与estimate_path product 类似。
我也试过了,但也没有成功
(Struct, path) =
case product do
"cards" -> (Card, card_path)
_ -> (Card, card_path)
end
【问题讨论】:
标签: elixir