1

我使用 will_paginate 插件。

为了生成可以缓存的路由(/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.htmland /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
4

1 回答 1

1

在这里,我找到了您问题的可能答案。

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

于 2010-02-26T18:10:16.843 回答