Rails将_paginate路由缓存重复页面

时间:2009-12-07 20:47:36

标签: ruby-on-rails url-routing will-paginate

我使用了will_paginate插件。

在oder中生成我可以缓存的路由(/posts/index/2而不是/posts?page=2)我将以下内容添加到我的routes.rb中:

map.connect '/posts/index/1', :controller => 'redirect', :url => '/posts/'  

map.connect 'posts/index/:page',
          :controller => 'posts',
          :action => 'index',
          :requirements => {:page => /\d+/ },
          :page => nil

第一行使用重定向控制器将/posts/index/1重定向到/posts/,以避免重复页面。

我设置'posts/index/:page'规则的方式有问题吗?

我认为添加:requirements => {:page => /\d+/ }会确保没有/post/index/参数的:page不起作用,但/posts/index.html正在缓存。

如何将/posts/index/重定向到/posts/以避免同时拥有/posts.html/posts/index.html

由于


更新

我只是添加了

map.connect '/posts/index/', :controller => 'redirect', :url => '/posts/'

而且我不再获得重复的页面了。

但是,我仍然不明白为什么我会/posts/index.html。关于如何使这条规则更简洁的任何解释或建议都是受欢迎的;)!

map.connect '/posts/index/1', :controller => 'redirect', :url => '/posts/'  
map.connect '/posts/index/', :controller => 'redirect', :url => '/posts/'
map.connect 'posts/index/:page',
          :controller => 'posts',
          :action => 'index',
          :requirements => {:page => /\d+/ },
          :page => nil

1 个答案:

答案 0 :(得分:1)

Here我找到了你问题的可能答案。

我认为添加:page => nil可以覆盖先前的条件。因此,当您删除此部件时,它可以按预期工作。