Rails3: как передать param в таможню будет paginate renderer?
у меня есть пользовательский визуализатор will_paginate, который переопределяет метод ссылки WillPaginate::ViewHelpers::LinkRenderer следующим образом:
def link(text, target, attributes = {})
"<a href='/users/95/friends_widget?page=#{target}' rel='next' data-remote='true'>#{text}</a>"
end
...и это отлично работает, за исключением того, что вы можете увидеть жестко закодированный 95 в этой ссылке. Как передать параметр (например, идентификатор пользователя или пользователя) в пользовательский рендеринг через представление Rails?
<%= will_paginate(@user_friends, :remote => true, :renderer => FriendsRenderer) %>
или есть что-то, чего мне не хватает, какой-то более простой способ сделать это?
BTW: @user_friends недоступен в пользовательском рендерере, и я уже пробовал просто добавить params в конец этого вызова will_paginate, например: user => user)
2 ответов
вид:
<%= will_paginate @user_friends, :renderer => 'FriendsRenderer',
:remote => true,
:link_path => friends_widget_user_path(@user) %>
class FriendsRenderer < WillPaginate::LinkRenderer
def prepare(collection, options, template)
@link_path = options.delete(:link_path)
super
end
protected
def link(page, text, attributes = {})
# Here you can use @link_path
end
end
обратите внимание, что это работает для версии will-paginate: 2.3.6
will_paginate позволяет вам пройти в :params
ссылки:
will_paginate(@user_friends, :params => { :user_id => 95 })