Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS控制ajax选项卡和JS控制将在同一个JS.erb中分页不工作(无休止的滚动)_Javascript_Ruby On Rails_Ajax_Tabs_Will Paginate - Fatal编程技术网

Javascript JS控制ajax选项卡和JS控制将在同一个JS.erb中分页不工作(无休止的滚动)

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("<%=

我试图解决这个问题已经有一段时间了,但我找不到解决办法。我使用ajax控制一些页面选项卡,工作正常:

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