Rails will_paginate пользовательский маршрут - PullRequest
8 голосов
/ 14 марта 2010

Как я могу использовать will_paginate с пользовательским маршрутом?

В моих маршрутах есть следующее:

map.connect 'human-readable/:name', :controller => :tags, :action => 'show'

но will_paginate использует url_for, насколько я могу судить, но я хочу использовать "удобочитаемый" вместо url_for, но как?

Редактировать

Когда я нажимаю на ссылку для пейджинга, созданную will_paginate, она использует:

"tags/show?name=Elektronikindustri&page=1"

Вместо:

"/human-readable/show?name=Elektronikindustri&page=1"

Я хочу, чтобы will_paginate использовал мой собственный маршрут вместо действительного имени контроллера

Ответы [ 3 ]

9 голосов
/ 15 марта 2010

Помощник вида will_paginate имеет опцию :params для переопределения генерации ссылки по умолчанию.

Изменить настройки маршрутов:

map.human_readable_tag '/human-readable/:name', 
     :controller => :tags, :action => 'show'

Вызовите помощник вида will_paginate следующим образом:

<%= will_paginate @tag_list, 
     :params => {:controller => human_readable_tag_path(@tag_name) } %>

Убедитесь, что в контроллере установлена ​​переменная @tag_name.

Для получения дополнительной информации прочитайте will_paginate документацию помощника представления .

Опция :params, передаваемая помощнику, используется для вызова url_for. Так что прочитайте url_for документацию о том, как мы подделали имя контроллера.

5 голосов
/ 26 мая 2011

Другой вариант - использовать param в will_paginate, но передать параметр следующим образом:

<%= will_paginate @products, :params => {:controller => 'human-readable', :action => 'show', :name => 'xyz'} %>

и теперь ваши ссылки будут выглядеть как читаемые человеком / xyz? Page = 2 ...

0 голосов
/ 14 марта 2010

Вы должны определить этот маршрут тоже

<code>
map.connect 'human-readable/:name', :controller => :tags, :action => 'show'
map.connect 'human-readable/:name/page/:page', :controller => :tags, :action => 'show'
...