Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 无法在Phoenix中创建嵌套资源_Elixir_Phoenix Framework - Fatal编程技术网

Elixir 无法在Phoenix中创建嵌套资源

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

我正在尝试创建一个按钮,使给定用户成为管理员。为此,我想为请求post/users/:id/admin创建一个路由。为此,我尝试创建一个嵌套资源,如下所示:

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