类似的控制器在不同的命名空间/范围 - 如何区分它们?

时间:2016-10-14 13:36:50

标签: elixir phoenix-framework

我在不同的范围/文件夹中有2个类似的控制器:

MyApp.Controller1
MyApp.Namespace1.Controller1

  # mix phoenix.routes
  some_path  GET /             MyApp.HomeController1 :index
  some_path  GET /namespace1   MyApp.Namespace1.Controller1 :index

如何在这些控制器中的_url或_path助手中引用:index

2 个答案:

答案 0 :(得分:2)

这应该是对先前答案的评论,但它太长了。 在web/router.ex中列出路线的第二个选项是:

scope "/namespace1" do
  get "/", MyApp.Namespace1.Controller1, :index, as: "namespaced"
end

现在,您应该可以在不传递模块名称的情况下使用some_path(conn, :index)namespaced_path(conn, :index)

答案 1 :(得分:1)

根据您的phoenix.routes,这些来电分别为:

some_path(MyApp.Endpoint, :index)
some_path(MyApp.Namespace1.Endpoint, :index)

有关详细信息,请参阅routing章节。