从控制器名称获取路径助手

时间:2018-02-27 11:02:34

标签: elixir phoenix-framework

在路线文档中。我读到我们可以得到这样的路径:

  iex> import HelloWeb.Router.Helpers
  iex> alias HelloWeb.Endpoint
  iex> user_path(Endpoint, :index)
       "/users"

我们是否可以从控制器user_path中获取User这样的

   user_path

由于

1 个答案:

答案 0 :(得分:1)

这不是公共API,将来可能会更改,但MyApp.Router.__routes__/0可用于获取所有路由。从那里你可以通过控制器过滤并获得指向该控制器的所有路线。

我的申请表中有一个标准resources "/posts", PostController。这是该应用程序的一些iex -S mix输出:

iex(1)> MyApp.Router.__routes__ |> hd
%Phoenix.Router.Route{
  assigns: %{},
  helper: "page",
  host: nil,
  kind: :match,
  opts: :index,
  path: "/",
  pipe_through: [:browser],
  plug: MyApp.PageController,
  private: %{},
  verb: :get
}
iex(2)> for route <- MyApp.Router.__routes__,
...(2)>     route.plug == MyApp.PostController,
...(2)>   do: route.helper
["post", "post", "post", "post", "post", "post", nil, "post"]