Rails will_paginate пользовательский маршрут
Как я могу использовать 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 ответа
will_paginate
view helper has a :params
option for overriding the default link generation.
Change your routes configuration:
map.human_readable_tag '/human-readable/:name',
:controller => :tags, :action => 'show'
Вызвать will_paginate
view helper as follows:
<%= will_paginate @tag_list,
:params => {:controller => human_readable_tag_path(@tag_name) } %>
Убедитесь, что вы установили @tag_name
variable in your controller.
For more information read the will_paginate
view helper documentation.
:params
option passed to the helper is used to invoke url_for
, So read the url_for
documentation for how we faked a controller name.
Другой вариант - использовать param в will_paginate, но передать параметр следующим образом:
<%= will_paginate @products, :params => {:controller => 'human-readable', :action => 'show', :name => 'xyz'} %>
и теперь ваши ссылки будут выглядеть как удобочитаемые /xyz?page=2...
Вы должны определить этот маршрут тоже
map.connect 'human-readable/:name', :controller => :tags, :action => 'show'
map.connect 'human-readable/:name/page/:page', :controller => :tags, :action => 'show'