2017-04-22 48 views
-1

我正在嘗試對將新用戶插入數據庫的結果進行模式匹配。在創建用戶操作中遇到模式匹配字符問題

我無法弄清楚下面的代碼有什麼問題,我是否可能使用了錯誤的鍵->

我已經複製並粘貼了鳳凰書中的代碼,但它仍然無法正常工作。

非常困惑,問題在這裏?我相信這是非常微小的東西!

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 
+3

這是'case Repo.insert(changeset)do'。你錯過了'case'這個詞。 –

回答

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