设置检索记录子集的路线

时间:2019-05-08 04:40:18

标签: ruby-on-rails routes

我有一个具有自己的控制器Event的模型,在该模型上,我有一个标志来告诉我是否公开,并创建记录的子集。如何设置路由/控制器以获取以下路由:

events/:id events/public events/public/:id

1 个答案:

答案 0 :(得分:4)

resources :events将为您提供以下路径:

/events
/events/:id
/events/:id/edit
# ... and so on

您可以使用public选项将path标志添加到提供自定义路由路径的路由:

resources :events, path: "events/(:flag)", constraints: {flag: 'public'}

这将为您提供以下路径:

/events
/events/public
/events/:id
/events/public/:id
/events/:id/edit
/events/public/:id/edit

路径包含“ public”时,params[:flag] = "public"中将有EventsController

要生成包含“ public”的路径,可以使用提供flag参数的路由帮助器方法:

events_path                  # => /events
events_path(flag: "public")  # => /events/public