我正在关注Railscast#174以实现与ajax的分页。在我的account_controller.rb中:
def index
@accounts = Account.paginate(:page => params[:page], :per_page => 10)
end
我在视图中使用haml格式,所以我有一个index.haml文件,其中包含了
= will_paginate @accounts
还包装了pagination.js文件
$(function () {
$('.pagination a').click(function () {
$.get(this.href, null, null, 'script');
return false;
});
});
我已经验证了访问了pagination.js代码。在控制台中,我看到响应代码200和html返回,但index.js.haml文件未呈现
alert("This is an AJAX request.");
Railscast正在使用js.erb扩展名,但我在项目的其余部分使用haml,我怀疑它可能与此有关但我无法弄清楚出了什么问题。有人会有想法吗?
答案 0 :(得分:0)
您必须在js代码中使用event.preventDefault()
。
试试这个:
$(function () {
$('.pagination a').click(function (event) {
event.preventDefault();
$.get(this.href, null, null, 'script');
return false;
});
});
答案 1 :(得分:0)
你能尝试这样做吗,
$('.pagination').on('click', 'a', function (e) {
e.preventDefault();
$.get(this.href, null, null, 'script');
return false;
});
或者可能将它绑定到.container(如果你有一个,其中.container是你的整个内容所在的类)
由于你的alert()没有被显示,我怀疑虽然你的js已加载,但它不会被触发。
答案 2 :(得分:0)
Rails4使用turbo链接,不会重新加载整个页面。所以'页面准备好了#39; js触发器不会一直被触发,但在这些情况下,'页面:更改'触发了。
$(document).on("page:change ready", function(){
$('.pagination a').click(function () {
...
});
答案 3 :(得分:0)
我必须将此代码添加到控制器:
respond_to do |format|
format.html
format.js {render :layout => false }
end