Javascript JS控制ajax选项卡和JS控制将在同一个JS.erb中分页不工作(无休止的滚动)
我试图解决这个问题已经有一段时间了,但我找不到解决办法。我使用ajax控制一些页面选项卡,工作正常:Javascript JS控制ajax选项卡和JS控制将在同一个JS.erb中分页不工作(无休止的滚动),javascript,ruby-on-rails,ajax,tabs,will-paginate,Javascript,Ruby On Rails,Ajax,Tabs,Will Paginate,我试图解决这个问题已经有一段时间了,但我找不到解决办法。我使用ajax控制一些页面选项卡,工作正常: $("#feed-content").html("<%= escape_javascript(render(:partial => "#{@partial_name}")) %>"); 缺少标记。我认为这不是问题所在。试着这样做: <% if params[:feed].present? %> $("#feed-content").html("<%=
$("#feed-content").html("<%= escape_javascript(render(:partial => "#{@partial_name}")) %>");
缺少
标记。我认为这不是问题所在。试着这样做:
<% if params[:feed].present? %>
$("#feed-content").html("<%= escape_javascript(render(:partial => "#{@partial_name}")) %>");
<% else %>
$('#products').append('<%= escape_javascript(render(:partial => 'sale_content', :products => @products, :remote => true)) %>');
<% if @products.next_page %>
$('.pagination').replaceWith('<%= escape_javascript( will_paginate(@products)) %>');
<% else %>
$('.pagination').remove();
<% end %>
<% end %>
$(“#提要内容”).html(“#{@partial_name}”))%>”;
$('#products')。追加(''sale#content',:products=>@products,:remote=>true))%>';
$('.pagination')。替换为('';
$('.pagination').remove();
我自己找到了一个解决方案。我在“远程真实”链接中添加了ID,如下所示。在这种情况下,“受欢迎”:
按“流行”排序,:remote=>true,:class=>“活动”,:id=>“流行”%>
然后在相应的popular.js.erb文件中,我向控制选项卡的ajax添加了一个onclick事件。这意味着ajax只在点击链接时运行,而不是在页面应该进行无休止的滚动部分时运行
$("#popular").click(function() {
$("#feed-content").html("<%= escape_javascript(render(:partial => "#{@partial_name}")) %>");
});
$('#products').append('<%= escape_javascript(render(:partial => "#{@partial_name}")) %>');
<% if @products.next_page %>
$('.pagination').replaceWith('<%= escape_javascript( will_paginate(@products)) %>');
<% else %>
$('.pagination').remove();
<% end %>
$(“#流行”)。单击(函数(){
$(“#提要内容”).html(“#{@partial_name}”))%>”;
});
$(“#产品”).append(“#{@partial_name}”))%>;
$('.pagination')。替换为('';
$('.pagination').remove();
也许有更好更干净的方法,但这对我来说很有效。我问了另一个问题,几乎和这个问题一样。如果有人需要更多的细节
更新:
上述解决方案需要在链接上单击两次以渲染部分。应改为使用下面的代码:
$('#popular').bind('ajax:complete', function() {
$("#feed-content").html("<%= escape_javascript(render(:partial => "popular_content")) %>");
});
$('popular').bind('ajax:complete',function()){
$(“#提要内容”).html(“#热门内容”)%>”;
});
此参数[:feed]中有什么内容
?它是返回布尔值true/false
还是整数1/0?我已经用视图文件和控制器文件更新了这个问题。我用params[:feeed]传递一个值,然后检查该值是否存在。但很明显我做错了什么。只是不知道如何修复它。嗯,这会产生与“if params[:feed]”相同的结果。我希望javascript的第一部分仅在单击视图中的“link_to remote true”部分时运行,第二部分在滚动发生时运行。现在它一直运行if部分。
def sale
products = Product.gender(current_user).available.includes(:likes)
@products = products.filter_by_categories(products).first(100).paginate(:page => params[:page], :per_page => 6)
@partial_name = "sale"
respond_to do |format|
format.html
format.json { render json: @products}
format.js
end
end
<% if params[:feed].present? %>
$("#feed-content").html("<%= escape_javascript(render(:partial => "#{@partial_name}")) %>");
<% else %>
$('#products').append('<%= escape_javascript(render(:partial => 'sale_content', :products => @products, :remote => true)) %>');
<% if @products.next_page %>
$('.pagination').replaceWith('<%= escape_javascript( will_paginate(@products)) %>');
<% else %>
$('.pagination').remove();
<% end %>
<% end %>
<p>Sort by <%= link_to "popular", products_popular_path(:feed => "popular"), :remote => true, :class => "active", :id => "popular"%>
$("#popular").click(function() {
$("#feed-content").html("<%= escape_javascript(render(:partial => "#{@partial_name}")) %>");
});
$('#products').append('<%= escape_javascript(render(:partial => "#{@partial_name}")) %>');
<% if @products.next_page %>
$('.pagination').replaceWith('<%= escape_javascript( will_paginate(@products)) %>');
<% else %>
$('.pagination').remove();
<% end %>
$('#popular').bind('ajax:complete', function() {
$("#feed-content").html("<%= escape_javascript(render(:partial => "popular_content")) %>");
});