Nao000のぶろぐ

蝶を追っている少年になりたい

elixir phoenix ルーティングの Path helper が重複しないようにする

elixir phoenix ルーティングの Path helper が重複しないようにする

どういう問題が起きるか

 以下のように、User側のコントローラーとAdmin側のコントローラーの path helperが同じ index_path として決まります。これでは、 Routesモジュールで呼び出す際に Routes.index_path となり区別が付きません。実際にどうなるかは試していませんが、見た目での区別が付きません。

index_path  GET   /                                      Nao000dotcomWeb.User.IndexController :index
index_path  GET   /admin                                 Nao000dotcomWeb.Admin.IndexController :index

公式ドキュメントに記載されています

Scoped Routes

https://hexdocs.pm/phoenix/routing.html#scoped-routes

以下のように別スコープを定義して、as: :admin とすれば解決します。

scope "/admin", Nao000dotcomWeb, as: :admin do
  pipe_through :browser

  get "/", Admin.IndexController, :index
end

以下のように admin_index_path となりました。

index_path  GET   /                                      Nao000dotcomWeb.User.IndexController :index
admin_index_path  GET   /admin                                 Nao000dotcomWeb.Admin.IndexController :index

参考資料

終わり

終わり