Elixir / Phoenix Framework noob在这里。
我正在尝试添加一条新路由来解析我作为网段传入的字符串。
router.ex
# Ping endpoint
scope "/", AppWeb do
pipe_through :api # Use the default browser stack
get "/:hash", ListnerController, :ping
end
listner_controller.ex
def ping(conn, %{"hash" => hash}) do
with {:ok, resp} <- Monitors.is_valid_hash(hash) do
render(conn, "hash.json", %{:data => resp})
end
end
context - monitor.ex
def is_valid_hash(hash) do
hash
end
我最终收到了Fallback操作的错误。只要我不使用with宏,代码就可以正常工作。
答案 0 :(得分:1)
您的请求将转至回退控制器,因为您的with
模式失败,最终返回的hash
不是Plug.Conn
。返回值不是Plug.Conn
的值将由Phoenix转发给回退控制器。您可能想从{:ok, hash}
返回is_valid_hash
:
def is_valid_hash(hash) do
{:ok, hash}
end