7

我正在尝试使用“更多”按钮进行“类似 Twitter”的分页,以使用 Kaminari 加载结果。

我在这里找到了这个问题

但我不知道如何使它起作用,以及它是否是一个好方法。

提前致谢

4

2 回答 2

17

你的意思是你需要一个“更多”按钮吗?创建这样的助手怎么样?

# 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 中,所以请让我知道您的想法。谢谢!

于 2011-05-05T02:30:09.960 回答
2

请记住,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 截屏视频。

于 2012-04-24T20:56:29.920 回答