Phoenix Fallback动作错误

时间:2018-05-21 11:43:59

标签: elixir phoenix-framework

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宏,代码就可以正常工作。

enter image description here

1 个答案:

答案 0 :(得分:1)

您的请求将转至回退控制器,因为您的with模式失败,最终返回的hash不是Plug.Conn。返回值不是Plug.Conn的值将由Phoenix转发给回退控制器。您可能想从{:ok, hash}返回is_valid_hash

def is_valid_hash(hash) do
  {:ok, hash}
end