我正在尝试使用“更多”按钮进行“类似 Twitter”的分页,以使用 Kaminari 加载结果。
但我不知道如何使它起作用,以及它是否是一个好方法。
提前致谢
你的意思是你需要一个“更多”按钮吗?创建这样的助手怎么样?
# usage:
# link_to_next_page(@items)
# link_to_next_page(@items, :remote => true) # Ajax
def link_to_next_page(scope, name, options = {}, &block)
param_name = options.delete(:param_name) || Kaminari.config.param_name
link_to_unless scope.last_page?, name, {param_name => (scope.current_page + 1)}, options.merge(:rel => 'next') do
block.call if block
end
end
如果您发现它有用,我已经准备好将这种辅助方法包含到 gem 中,所以请让我知道您的想法。谢谢!
请记住,link_to_next_page(@items, :remote => true)
开箱即用无法正常工作。由于 Ajax 请求后无法确定当前页面,因此需要在获取新项目后替换链接。使用不显眼的 javascript,这看起来像这样:
# app/views/items/index.js.erb
$(".items").append("<%= escape_javascript(render(@items)) %>");
$(".more_link").replaceWith("<%= escape_javascript(
link_to_next_page @items, 'View more',
:remote => true,
:id => :view_more) %>");
如果这没有意义,请查看Railscasts上的Unobtrusive Javascript 截屏视频。