Ruby On Rails重叠路由

时间:2017-02-08 21:06:52

标签: ruby-on-rails ruby

我正在使用Magento重建/重新设计目前正在生产的Rails中的网站。为了确保我不降低我的搜索引擎优化排名,我保持我的URI相同。我正面临一个优化问题,因为当前站点没有子目录。话虽如此,产品位于网站的根目录下,评论位于网站的根目录下,所有其他内容页面位于网站的根目录下。 例如,产品可能在

www.example.com/some-product-name

可以在

进行审核
www.example.com/some-review-name

rails显然使用路由,我的第一个猜测是制作一个如下所示的路线:

get '/:uri_identifier', to: 'pages#find_page'

这很好用,但是有50k产品可以查询和5k评论以及另外200个不同的内容页面,这会产生一个优化问题,因为这个控制器方法变成了一个捕获所有基于它应该呈现的页面

params[:uri_identifier]

uri没有任何形式,因此使用if语句过滤它们以避免大量查询并不可行。我的想法是创建特定于评论的路线,并将它们添加到路线上方的routes.erb

get '/:uri_identifier', to: 'pages#find_page'    

但是我仍然需要创建接近5k的路线来解决这个问题。我确实试过这个并且它有效,但我不确定什么是解决这个问题的最佳方法,以确保我使用最少量的资源。

1 个答案:

答案 0 :(得分:0)

有几种模式可以解决rails中的这类问题。其中一个是slug约束。使用这些资源可以帮助我们使用slugs和重构大型rails路径的概念

  1. http://blog.arkency.com/2014/01/short-urls-for-every-route-in-your-rails-app/
  2. http://code-worrier.com/blog/custom-slugs-in-rails/
  3. Refactoring a large routes.rb file in rails 4