在 Phoenix Router 中使用不带 :id 的资源宏

Use resources macro without :id in Phoenix Router

默认情况下,resources 宏会在路由末尾附加一个 /:id,用于对单个资源进行操作。

但是,我有一个案例,用户必须始终登录才能对自己执行操作。我更喜欢从 conn.assigns 获取 :current_user,而不是通过 in/showing 在 URL 中传递任何参数。我知道我总是可以一条一条地写出路线。我只是想知道有没有办法让resources生成这样的路径

您可以使用 :singleton 选项执行此操作:

When a resource needs to be looked up without referencing an ID, because it contains only a single entry in the given context, the :singleton option can be used to generate a set of routes that are specific to such single resource.


用法示例:

resources "/user", UserController, singleton: true

这将生成以下路由:

  • GET /user
  • GET /user/new
  • POST /user
  • GET /user/edit
  • PATCH /user
  • PUT /user
  • DELETE /user

您可以将它与 :only:except 选项组合到 include/exclude 某些路线