Похожие контроллеры в разных пространствах имен / областях — как их различать?

#elixir #phoenix-framework

#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
 

Как я могу ссылаться :index на помощников _url или _path в этих контроллерах?

Ответ №1:

Это должен быть комментарий к предыдущему ответу, но он был слишком длинным. Существует второй вариант для обозначения маршрута в вашем web/router.ex :

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

Теперь вы должны иметь возможность использовать some_path(conn, :index) и namespaced_path(conn, :index) без передачи имени модуля.

Ответ №2:

Согласно вашему phoenix.routes , эти вызовы соответственно:

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

Подробности см. в главе о маршрутизации.