如何处理不可预测的路线?

时间:2011-09-08 04:06:58

标签: ruby-on-rails routing content-management-system

假设以下路径合法且正在解决:

http://test.local/wizards/home
http://test.local/wizards/wizardfest2012/dates
http://test.local/dragons/
http://test.local/dragons/blog/stop-slaying-us
http://test.local/

对于包含博客的CMS,这是(如果您无法分辨),因此用户将生成slu ..我有一些路由要首先处理保留名称空间(例如admin)。

我假设用户生成的路由需要路由到Page控制器 - 但是,我不认为实际向routes.rb添加一行是有效的。那么我的问题是,如何处理参数的第一部分(在本例中为wizardsdragons)以从模型中获取正确的信息?

这是我的一个想法 - 分裂(不知何故)slug的第一部分(再次,wizardsdragons并传递其余的slug(例如,/wizardfest2012/dates)到模型以获取相关内容。

有关最有效方法的想法吗?

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你想要达到的目标,但也许这就是你想要的:

constraints :camp => /wizards|dragons/ do
  match ':camp/home'    => "pages#home"
  match ':camp/blog/:title' => "pages#blog"
  # ...and all the routes with known components
  match ':camp/*other'  => "pages#other"
end

您可以创建一个before_filter来识别params[:camp]并准备必要的模型或任何需要的模型。

other操作会收到"wizardfest2012/dates"字符串params[:other]。我希望这就是你所需要的。

"Rails Routing from the Outside In"指南可能值得一读,除非您已经阅读过。