If with fails, it just returns the unmatched value which probably has{:error, ....} in it. So in fallback controller
defmoduleReactPhoenixWeb.FallbackControllerdo@moduledoc """ Translates controller action results into valid `Plug.Conn` responses. See `Phoenix.Controller.action_fallback/1` for more details. """useReactPhoenixWeb, :controller# This clause handles errors returned by Ecto's insert/update/delete.defcall(conn, {:error, %Ecto.Changeset{} = changeset}) do conn|>put_status(:unprocessable_entity)|>put_view(ReactPhoenixWeb.ChangesetView)|>render("error.json", changeset: changeset)end# This clause is an example of how to handle resources that cannot be found.defcall(conn, {:error, :not_found}) do conn|>put_status(:not_found)|>put_view(ReactPhoenixWeb.ErrorView)|>render(:"404")endend