true, :id=>"load_more_lin-6ren">
gpt4 book ai didi

ruby-on-rails - rails : 'Load More' button with Ajax & Kaminari

转载 作者:行者123 更新时间:2023-12-03 16:07:58 33 4
gpt4 key购买 nike

我想用 Kaminari 创建一个“加载更多”ajax 分页。
我正在使用此代码:

class BienvenueController < ApplicationController
def index
@articles = Admin::Article.page(1).per(2)
respond_to do |format|
format.html
format.js
end
end
end

# Bienvenue#index

<div class="container" style="min-width:<%= @width %>px">
<%= render "shared/articles" %>
<%= link_to_next_page @articles, 'Load More', :remote => true, :id=>"load_more_link" %>
# Shared/articles

<% @articles.each do |a| %>
<article class="<%= a.rubrique.color %>">
<div class="sharing">
<%= image_tag "facebook-32.png" %>
</div>
<p class="color<%= a.rubrique.color %>"><i>Le <%= I18n.localize(a.created_at, :format => :long) %> par David Perrotin</i></p>
<h1><%= a.titre %></h1>
<div class="excerpt">
<%= a.chapo.html_safe %>
</div>
<div class="image">
<%= image_tag a.mainphoto.url(:medium), :width=>"100%" %>
</div>
<div class="contenu">
<%= a.contenu.html_safe %>
</div>
<div class="readmore">
<%= link_to "Continuer la lecture", article_path(a) %>
</div>
</article>
<% end %>

# index.js.erb

$('.container').append("<%= escape_javascript(render 'shared/articles')%>");
$('#load_more_link').replaceWith("<%= escape_javascript(link_to_next_page(@articles, 'Load More', :remote => true, :id=>'load_more_link'))%>");

但问题是,当我点击“加载更多”时,它总是显示两篇相同的文章,部分永远不会再刷新两篇文章,就像我想要的那样。

最佳答案

我刚刚遇到了一个可能对其他人有帮助的问题。根据您的 jQuery 版本,不要使用 replaceWith#load_more_linkindex.js.erb .

有一个回归( http://bugs.jquery.com/ticket/13401 ),一个空的 replaceWith 什么也不做,所以在你的集合的最后一页, link_to_next将是空的,使行:$('#load_more_link').replaceWith('');因此不会替换最后一个“更多”按钮,因此您将不断加载数据集的最后一页。

通过更新 jQuery 版本或使用 empty().html('...') 修复而不是replaceWith。

关于ruby-on-rails - rails : 'Load More' button with Ajax & Kaminari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16171705/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com