Rails:由于某些原因,JS控制器被称为两次

Spe*_*cer 6 javascript ruby ajax jquery ruby-on-rails

出于某种原因,当我点击一个按钮时,我的控制器和生成的jquery函数被调用两次.由于调用的js函数是切换,这是一个问题,因为它会导致代码跳入和跳出视图.

这是表格:

Unseen Notifications: <%=  current_user.notification_unseen %> </div>
                <%= button_to "show", {:action => "seen", :controller=>"notifications"}, :remote => true %>
Run Code Online (Sandbox Code Playgroud)

这是控制器:

def seen
    respond_to do |format|
      format.js 
    end
  end
Run Code Online (Sandbox Code Playgroud)

这是jquery:

$("div#notifications").toggle();
$("div#count").html("<%= escape_javascript( render :partial => 'notifications/count')%>");
Run Code Online (Sandbox Code Playgroud)

我不知道为什么地球上可能会发生这种情况.我一直非常小心,不要双击,不知道如何防止它.任何建议都会有很大的意义.

Ben*_*Hao 15

我之前遇到过这样的问题,当时我有2个jquery库.特别是,检查您是否只有jquery_ujs.js而不是jquery.js.好像当你包含它们时,某些js函数被调用两次.

希望这可以帮助!

  • 我是第二个动议.同样发生在我身上的多个库被引用. (2认同)
  • 我明白了你的意思.但是当我删除其中任何一个时,ajax/jquery都会停止工作 (2认同)

Elo*_*dev 5

如果Benjamin的建议不起作用,你可以使用作弊和黑客,并在每次点击时添加1到一些全局变量(这将发生两次),然后使用模数仅在(global_counter%2 == 0)时触发你的动作.

需要明确的是,这是一个可怕的解决方案,如果可能的话,你应该避免使用......