在 Phoenix 路由器中使用不带 :id 的资源宏

xji*_*xji 0 elixir phoenix-framework

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

但是,我遇到的情况是,用户必须始终登录才能对自己执行操作。我更喜欢:current_user从获取conn.assigns,而不是通过传入/显示 URL 中的任何参数。我知道我总能把路线一一写出来。我只是想知道是否有办法让resources生成这样的路径。

She*_*yar 6

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

当需要在不引用 ID 的情况下查找资源时,因为它仅包含给定上下文中的单个条目,因此该:singleton选项可用于生成特定于此类单个资源的一组路由。


使用示例:

resources "/user", UserController, singleton: true
Run Code Online (Sandbox Code Playgroud)

这将生成以下路由:

  • 获取/用户
  • 获取/用户/新
  • 发布/用户
  • 获取/用户/编辑
  • 补丁/用户
  • 放置/用户
  • 删除/用户

您可以将其与:only:except选项结合起来以包含/排除某些路线