I am getting an error form the err
branch of the with
statement listed below. The error message (below) is “argument error”, but I can’t see what’s wrong.
In user_controller.ex:
def create(conn, %{"user" => user_params}) do
user_params |> IO.inspect(label: "user_params")
with {:ok, username} <- Query.username_is_available(user_params["username"]),
{:ok, email} <- Query.email_is_available(user_params["email"]),
{:ok, %User{} = user} <- UserSpace.create_user(user_params) do
conn
|> put_status(:created)
|> put_resp_header("location", user_path(conn, :show, user))
|> render("show.json", user: user)
else
err -> render("error.json", error: "duplicate email or username")
end
end
In user_view.ex:
def render("error.json", %{error: message}) do
%{ error: message }
end
Error message:
iex(8)> [debug] Preflight CORS request from Origin "http://localhost:8080" is allowed
[debug] Simple CORS request from Origin "http://localhost:8080" is allowed
[info] POST /api/users/
user_params: %{
"email" => "eta@foo.io",
"firstname" => "eta",
"password" => "lobo4795",
"username" => "eta"
}
[debug] Processing with BookListWeb.UserController.create/2
Parameters: %{"user" => %{"email" => "eta@foo.io", "firstname" => "eta", "password" => "[FILTERED]", "username" => "eta"}}
Pipelines: []
[debug] QUERY OK source="users" db=0.4ms
SELECT u0."id", u0."email", u0."username", u0."firstname", u0."lastname", u0."password_hash", u0."admin", u0."blurb", u0."public", u0."inserted_at", u0."updated_at" FROM "users" AS u0 WHERE (u0."username" = $1) ["eta"]
[info] Sent 500 in 20ms
[error] #PID<0.594.0> running BookListWeb.Endpoint (cowboy_protocol) terminated
Server: localhost:4000 (http)
Request: POST /api/users/
** (exit) an exception was raised:
** (ArgumentError) argument error
:erlang.apply("error.json", :private, [])