2009-12-07 2 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

Смежные вопросы