Rails 3 - “更多”使用 Kaminari 进行 ajax 分页

发布于 2024-11-02 13:15:57 字数 269 浏览 6 评论 0原文

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

我发现这个问题在这里< /a>

但我不知道如何让它发挥作用,以及这是否是一个好方法。

提前致谢

I am trying to do a "Twitter like" pagination with a "More" button to load results with Kaminari.

I found this question here

But I can't figure out how to make it works and if it's a good approach.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

圈圈圆圆圈圈 2024-11-09 13:15:57

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

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

Do you mean you need a "more" button? How about creating a helper like this?

# 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

I'm ready to include this kind of helper methods to the gem if you find it useful, so please let me know what you think. Thanks!

起风了 2024-11-09 13:15:57

请记住,link_to_next_page(@items, :remote => true) 开箱后无法正常工作。由于在 Ajax 请求后无法确定当前页面,因此在获取新项目后需要替换链接。使用 unobtrusive 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 上的不引人注目的 Javascript 截屏视频

Keep in mind that link_to_next_page(@items, :remote => true) won't work correctly out of the box. Since it has no way to determine the current page after an Ajax request, the link needs to be replaced after new items are fetched. Using unobtrusive javascript, this would something look like this:

# 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) %>");

If this doesn't make sense, take a look at the Unobtrusive Javascript screencast at Railscasts.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文