Rails:将请求发送回路由器

时间:2016-05-09 09:42:14

标签: ruby-on-rails ruby

我正在开发一个具有一些CMS功能的应用,其中客户端可以匹配其文章的任意路径。

现在,我想使用route globbing来匹配任何html请求,然后检查控制器是否有一些文章要显示。如果没有文章,我想将请求发回到路线解析流程中,以搜索其他可能的匹配。

我想应该有一个例外,但我无法弄明白。这不是RoutingError

1 个答案:

答案 0 :(得分:0)

配置文件:config/routes.rb在定义应用程序路由时从上到下运行。您需要做的就是在此文件的顶部定义一个catch-all。

我还建议您考虑使用某种Constraint(这样您也可以缓存结果)。例如,您的解决方案可能类似于:

 # config/routes.rb
 get '*', to: 'Article#show', constraints: ArticleConstraint.new

 # lib/article_constraint.rb
 class ArticleConstraint
   def matches?
     # Really trivial example... You could make this better, e.g. use cacheing!
     Article.exists?(name: request.path)
   end
 end