我有一个具有自己的控制器Event
的模型,在该模型上,我有一个标志来告诉我是否公开,并创建记录的子集。如何设置路由/控制器以获取以下路由:
events/:id
events/public
events/public/:id
答案 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