Elixir 无法在Phoenix中创建嵌套资源
我正在尝试创建一个按钮,使给定用户成为管理员。为此,我想为请求post/users/:id/admin创建一个路由。为此,我尝试创建一个嵌套资源,如下所示:Elixir 无法在Phoenix中创建嵌套资源,elixir,phoenix-framework,Elixir,Phoenix Framework,我正在尝试创建一个按钮,使给定用户成为管理员。为此,我想为请求post/users/:id/admin创建一个路由。为此,我尝试创建一个嵌套资源,如下所示: resources "/users", UserController, only: [:new, :create, :index] do resources "/admin", UserController, only: [:post] end 但当我运行mix phx.routes | grep用户时,我只会得到这些路由: user
resources "/users", UserController, only: [:new, :create, :index] do
resources "/admin", UserController, only: [:post]
end
但当我运行mix phx.routes | grep用户时,我只会得到这些路由:
user_path GET /users StorexWeb.UserController :index
user_path GET /users/new StorexWeb.UserController :new
user_path POST /users StorexWeb.UserController :create
就好像嵌套的资源没有被声明一样。我的资源声明有什么问题?我如何修复它呢?对于嵌套资源,它不是一个资源,而是一个范围。以下方面应起作用:
scope "/users" do
resources "/", UserController, only: [:new, :create, :index]
resources "/admin", UserController, only: [:post]
end
对于嵌套资源,这将不是一个资源,而是一个范围。以下方面应起作用:
scope "/users" do
resources "/", UserController, only: [:new, :create, :index]
resources "/admin", UserController, only: [:post]
end
该问题仅限于:[:post]。没有这样的动作:post,所以你最终一无所获。你可能想要这个:
resources "/users", UserController, only: [:new, :create, :index] do
resources "/admin", UserController, only: [:create]
end
为了避免进一步的混乱,我将在凤凰城公开一个问题,提出这些问题。该问题仅在:[:post]中。没有这样的动作:post,所以你最终一无所获。你可能想要这个:
resources "/users", UserController, only: [:new, :create, :index] do
resources "/admin", UserController, only: [:create]
end
我将在Phoenix中提出一个问题,以避免进一步混淆。对于这种情况,我更喜欢直接使用post/get,而不是使用资源,因为我不必使用特定的函数名,例如create,特别是当嵌套资源的控制器只有一个端点/函数时,例如/users/admin用邮递
对于这种情况,我更喜欢直接使用post/get而不是使用资源,因为我不必使用特定的函数名,例如create,特别是当嵌套资源的控制器只有一个端点/函数时,例如/users/admin with post