代码之家  ›  专栏  ›  技术社区  ›  Gayan Hewa

Phoenix回退操作错误

  •  0
  • Gayan Hewa  · 技术社区  · 6 年前

    长生不老药/凤凰框架在这里。

    我正在尝试添加一个新路由,该路由将解析作为URL段传入的字符串。

    路由器。前任

    # Ping endpoint
    scope "/", AppWeb do
     pipe_through :api # Use the default browser stack
    
     get "/:hash", ListnerController, :ping
    end
    

    listner_控制器。前任

      def ping(conn, %{"hash" => hash}) do
        with {:ok, resp} <- Monitors.is_valid_hash(hash) do
          render(conn, "hash.json", %{:data => resp})
        end
      end
    

    上下文监视器。前任

      def is_valid_hash(hash) do
        hash
      end
    

    我最终在回退操作中出错。只要我不使用with宏,代码就可以正常工作。

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   Dogbert    6 年前

    您的请求将发送到回退控制器,因为您的 with 模式失败,最终返回 hash 这不是一个 Plug.Conn .返回的值不是 插头康涅狄格州 由Phoenix转发给后备控制器。你可能想回来 {:ok, hash} 从…起 is_valid_hash :

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