【问题标题】:Setting up routes for retrieving subset of records设置检索记录子集的路由
【发布时间】:2019-05-08 04:40:17
【问题描述】:

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

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

【问题讨论】:

  • 您的问题没有得到很好的描述。你的意思是你想创建一个自定义方法来检索自定义数据?你找到你的路线了吗使用rake routes

标签: ruby-on-rails routes


【解决方案1】:

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

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

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

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

这将为您提供以下路径:

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

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

要生成包含“公共”的路径,您可以使用提供flag 参数的路由辅助方法:

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

【讨论】:

  • 这是一个比我在公共上声明收藏资源更好的解决方案。这样我就不需要我创建的另一个控制器,而且它更干净。必须先进行一些重构才能得到这个,所以我会这样做并在我这样做后接受你的回答。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
  • 2017-07-18
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
相关资源
最近更新 更多