In my controller action i have two scrub_params clauses:
plug :scrub_params, "account"
plug :scrub_params, "studio"
When one of params is not present Phoenix raises Phoenix.MissingParamError. Is there any way to rescue this error and return some json message for user?
plug MyApp.ScrubParams, "account"
defmodule MyApp.ScrubParams do
def init(key), do: key
def call(conn, key) do
Phoenix.Controller.scrub_params(conn, key)
rescue
Phoenix.MissingParamError ->
conn
|> Plug.Conn.put_status(:bad_request)
|> Phoenix.Controller.render(MyApp.ErrorView, "bad_params.json", key: key)
|> Plug.Conn.halt()
end
end
2 Likes
Shouldn’t there be a try somewhere? I’ve never seen rescue for def.
Heh, here it is https://hexdocs.pm/elixir/Kernel.html#def/2-rescue-catch-after.
1 Like
whaaaaaaaaaaaaaaaaaaaaaat
I can’t believe I’ve missed this!
2 Likes