Ric*_*wis 3 ruby jquery ruby-on-rails will-paginate ruby-on-rails-4
我一直在阅读SO上的一些帖子,看看其他人是如何处理这个并且我正在使用的实现几乎在那里但是在第三个链接请求后失败,会发生什么是重新加载页面而不是触发ajax请求.我也删除了Turbolinks,但这并没有什么不同.
这是我的设置,我认为js在某个地方失败了,因为我的jQuery不是那么强大我希望有人可以帮忙
Index.html.erb
<div class="facebook_ajax">
<%= render 'shared/posts' %>
</div>
Run Code Online (Sandbox Code Playgroud)
共享/ _posts.html.erb
<% @posts.each do |p| %>
<article class="post">
<%= image_tag('/assets/vandals_fb_profile.jpg') %>
<%= link_to 'Varsity Vandals', "https://www.facebook.com/VarsityVandals", target: 'blank' %>
<%= date_output(p.created_time) %>
<figure>
<% if p.large_image_url? %>
<%= image_tag(p.large_image_url) %>
<% end %>
<% if p.video_url? %>
<%= raw youtube_embed(p.video_url) %>
<% end %>
</figure>
<p><%= p.message.gsub("\n", "<br>").html_safe %></p>
<% if p.description? %>
<p><%= p.description %></p>
<% end %>
<%= link_to 'Read More', p.link %>
</article>
<hr/>
<% end %>
<%= will_paginate @posts, previous_label: '', next_label: '', page_links: false %>
Run Code Online (Sandbox Code Playgroud)
index.js.erb的
$('.facebook_ajax').html("<%= escape_javascript(render("shared/posts"))%>")
Run Code Online (Sandbox Code Playgroud)
jQuery的
<script>
$(document).ready(function () {
$(".facebook_ajax .pagination a").on("click", function(){
$.getScript(this.href);
return false;
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
因此,当第一次单击下一个链接ajax请求完成时,但在第三次单击时页面重新加载并且URL更改为
?_=1399027258398&page=3
Run Code Online (Sandbox Code Playgroud)
有谁知道如何打击这个请
谢谢
以为我会回答这个问题,也许它可以帮助其他人,我不得不将事件委托给一直存在的DOM元素,所以使用body标签例如
$(document).ready(function () {
$("body").on("click", '.facebook_ajax .pagination a', function(e){
e.preventDefault();
$.getScript(this.href);
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
我的理解是,一旦第一次点击,你就会失去收集的原始href集合
好的链接在这里