在 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 某些路线
默认情况下,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 某些路线