我有一个奇怪的问题,其中JQuery正在为一个link_to方法创建两个AJAX请求。我正在开发一个Rails 3应用程序与JQuery的UJS。我有一个切换链接,在“跟随”和“取消关注”
我的链接呈现如下:
<span id="follow_link"> <a href="/tfollow_artist?id=8103103" data-method="post" data-remote="true" id="follow_artist" rel="nofollow">Unfollow</a> </span>
我的控制器设置如下:
def tfollow_artist @artist = Artist.find(params[:id]) if current_user.following?(@artist) current_user.stop_following(@artist) else current_user.follow(@artist) end end
最后渲染一个js为:
$('#follow_link').html('<%= escape_javascript(render :partial => "follow") %>');
其中基本上替换了’< span id =“follow_link”> …< / span>与相同的URL只有文本不同。例如,上面现在将呈现为:
<span id="follow_link"> <a href="/tfollow_artist?id=8103103" data-method="post" data-remote="true" id="follow_artist" rel="nofollow">Follow</a> </span>
但是这是以某种方式导致JQuery做出两个AJAX请求。
任何人都能看到这里有什么不对?
我使用’jquery-rails’gem是复制最新的jquery-ujs文件到我的应用程序。 JQuery版本是1.4.3
解决方法
感谢这个对话框:
https://github.com/rails/jquery-ujs/issues/208
我发现jquery和jquery_ujs被包括两次。
我想jquery-rails gem自动将它们放入application.js,然后我也把它们包括在application.js中。
似乎无论什么原因application.js自动捆绑在app /资产/ javascripts / – 即使我删除所有要求的一切。
所以,如果你的:remote =>真正的表单被提交两次,请尝试检查application.js。
希望这可以帮助!
更新:我相信这可能与我有预先呈现我的资产,而不使用摘要,所以,当我的开发环境添加脚本标签动态从app / assets / application.js中的需求,还添加了一个应该是一个空的动态application.js,除了来自public / assets的静态方法被加载。混乱?是的!