我有一个自定义的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视图将参数(例如用户或用户的ID)传递到自定义渲染器?
<%= will_paginate(@user_friends, :remote => true, :renderer => FriendsRenderer) %>
或者有什么我想念的东西,有一些更容易的方法吗?
BTW:自定义渲染器中没有@user_friends,我已经尝试过将params添加到will_paginate调用的末尾,例如: :user =&gt;用户)
答案 0 :(得分:19)
will_paginate允许您传递:params
链接:
will_paginate(@user_friends, :params => { :user_id => 95 })
答案 1 :(得分:4)
<%= 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