2009-12-07 99 views
1

我使用will_paginate插件。Rails 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.html/posts/index.html

感謝


UPDATE

我只是簡單地添加

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

Here我找到了可能的答案給你的問題。

我認爲加入:page => nil可以覆蓋以前的情況。所以也許當你刪除這部分時,它會按照你的預期工作。

+0

謝謝你,我一定會嘗試,並回來更新這個線程。 – deb 2010-02-26 22:54:08