jquery_ujs与Kaminari AJAX在Rails 4中发生冲突?

5

简短版:jquery_ujs似乎与Kaminari的AJAX支持发生冲突,我不知道为什么。

在我的Rails 4应用程序中,我在application.js中有以下行:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require_tree .

如果我删除jquery_ujs,那么以下代码将停止工作;它开始发送GET请求而不是DELETE请求,用户通过发送GET请求只会收到资源的展示页面。
<%= link_to 'Delete Horse', horse, method: :delete, data: { confirm: 'Are you sure?' } %>

但是如果我留下jquery_ujs,使用AJAX的Kaminari将停止工作....

<%= paginate @horses, :remote => true %>

当单击时不起作用(尽管已呈现 HTML 中的 HREF 标签是正确的)。

如果我从 paginate @horses 链接中删除 :remote => true,则链接开始工作。但是,A)基于用户体验的考虑,我希望 AJAX 起作用,B)我希望了解为什么会发生这种情况。


1
你能提供更多关于“走不通”的细节吗?这意味着没有进行任何AJAX请求,因为你可以从Chrome检查器的网络选项卡中看出来吗?你能告诉哪个JavaScript函数失败了吗? - Ivan -Oats- Storck
1
那么,在服务器上会发生什么?HorsesController中是否有一个index的.js格式方法? - Ivan -Oats- Storck
检查后发现,在分页失败的情况下点击链接会向服务器发送一个请求,其中包含以下行:Processing by HorsesController#index as JS。在没有:remote => true的情况下,它调用Processing by HorsesController#index as HTML。后者有效,前者无效。 如果我从application.js中删除jquery_ujs,则带有:remote => true的失败案例将在请求中从as JS更改为as HTML。因此,将jquery_ujs放在那里会使AJAX请求从as HTML更改为as JS,然后失败。 - NBarnes
控制器#index没有respond_to块。链接声明中的整个paginate方法是Kaminari魔法;我不确定它内部发生了什么。 - NBarnes
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接