在我的创建用户操作

时间:2017-04-22 00:48:00

标签: elixir phoenix-framework

我正在尝试对将新用户插入数据库的结果进行模式匹配。

我无法弄清楚下面的代码有什么问题,我可能会使用错误的密钥->吗?

我复制并粘贴了凤凰书中的代码,但它仍然无效。

这里的问题很困惑?我相信这是非常小的东西!

def create(conn, %{"user" => user_params}) do
    changeset = User.changeset(%User{}, user_params)
    Repo.insert(changeset) do
      {:ok, user} ->
        conn
        |> put_flash(:info, "#{user.name} created!") 
        |> redirect(to: user_path(conn, :index))
      {:error, changeset} ->
        render(conn, "new.html", changeset: changeset)
    end
  end

我收到错误:

== Compilation error on file web/controllers/user_controller.ex ==
** (CompileError) web/controllers/user_controller.ex:24: unhandled operator ->
    (stdlib) lists.erl:1354: :lists.mapfoldl/3
    (stdlib) lists.erl:1355: :lists.mapfoldl/3
    (stdlib) lists.erl:1354: :lists.mapfoldl/3
    (stdlib) lists.erl:1355: :lists.mapfoldl/3

1 个答案:

答案 0 :(得分:2)

Justin Wood评论,缺少case个关键字。

  def create(conn, %{"user" => user_params}) do
    changeset = User.changeset(%User{}, user_params)
    case Repo.insert(changeset) do
      {:ok, user} ->
        conn
        |> put_flash(:info, "#{user.name} created!") 
        |> redirect(to: user_path(conn, :index))
      {:error, changeset} ->
        render(conn, "new.html", changeset: changeset)
    end
  end