Login &引用;协议可枚举未实现“;使用参数重定向时出错

Login &引用;协议可枚举未实现“;使用参数重定向时出错,login,request,elixir,phoenix-framework,Login,Request,Elixir,Phoenix Framework,在UserController:create上创建用户后,我想将他们重定向到会话路径(conn,:create)以让他们登录。但我无法让电话正常工作。这就是我所尝试的: def create(conn, %{"user" => user_params}) do changeset = User.registration_changeset(%User{}, user_params) case Repo.insert(changeset) do {:ok, user} -&

在UserController:create上创建用户后,我想将他们重定向到会话路径(conn,:create)以让他们登录。但我无法让电话正常工作。这就是我所尝试的:

def create(conn, %{"user" => user_params}) do
  changeset = User.registration_changeset(%User{}, user_params)

  case Repo.insert(changeset) do
    {:ok, user} ->
      conn
      |> put_status(:created)
      |> redirect(to:  session_path(conn, :create, Poison.encode!(user_params)))
    {:error, changeset} ->
      conn
      |> put_status(:unprocessable_entity)
      |> render(Prode.UserView, "error.json", errors: changeset.errors)
  end
end 
它抛出以下错误:

(Protocol.UndefinedError) protocol Enumerable not implemented for "{\"password\":\"s3cr3t\",\"email\":\"foo@barr.com\"}"
在这一行:

|> redirect(to:  session_path(conn, :create, Poison.encode!(user_params)))
我应该添加用户和会话控制器的路由设置为使用json:

pipeline :api do
  plug :accepts, ["json"]
end

scope "/api", Prode do
  pipe_through :api
  resources "/users", UserController
  resources "/sessions", SessionController, only: [:create, :delete]
end
和SessionController create接受用户参数:

def create(conn, %{"user" => user_params}) do
  ...
end

你为什么要传递
Poison.encode!(用户参数)
在那里?你的
:create
路线是否接受命名参数?刚刚编辑了问题以添加此信息@DogbertAh,这是一个POST路线;您不能将
重定向到it.ups。你说得对@Dogbert谢谢