簡體   English   中英

Rails:JS Controller 由於某種原因被調用了兩次

[英]Rails: JS Controller Being Called Twice for Some Reason

由於某種原因,當我單擊一個按鈕時,我的 controller 和生成的 jquery function 被調用了兩次。 由於調用的 js function 是切換的,因此這是一個問題,因為它會導致代碼跳入和跳出視圖。

這是表格:

Unseen Notifications: <%=  current_user.notification_unseen %> </div>
                <%= button_to "show", {:action => "seen", :controller=>"notifications"}, :remote => true %>

這是 controller:

def seen
    respond_to do |format|
      format.js 
    end
  end

這是 jquery:

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

我不知道為什么這可能會發生。 我一直非常小心不要雙擊,也不知道如何防止它。 任何建議將不勝感激。

我最近遇到過這樣的問題,當時我有 2 個 jquery 庫。 特別是,檢查您是否只有 jquery_ujs.js 而不是 jquery.js。 似乎當你同時包含它們時,某些 js 函數會被調用兩次。

希望這可以幫助!

如果本傑明的建議不起作用,您可以使用作弊和黑客攻擊 go 並在每次單擊時為某個全局變量加 1(這會發生兩次),然后使用模數僅在 (global_counter % 2 == 0) 時觸發您的操作。

需要明確的是,這是一個糟糕的解決方案,您應該盡可能避免使用......

我是 Rails 新手,遇到了同樣的問題。 原來我有:

<%= javascript_include_tag "application" %>

在我看來和在 application.html.erb 中。 我刪除了其中一個,瞧,修復了。

如果您在 rails 5.1 及更高版本中運行 jquery,因為 rails 放棄了 jquery 支持並切換到自己的 ujs,您需要從 application.js 文件中刪除 //= require rails-ujs。

我在運行最新版本的 rails 時遇到了同樣的問題,這解決了我的問題。

類似於Michael MayerBenjamin Tan Wei Ha的回答:

在實現 Webpacker 時,第二個<%= javascript_pack_tag 'application' %>可能會被添加到布局中(甚至是自動添加)。 這發生在最近,當現代化一個還沒有為 Rails 7 做好准備的舊應用程序時。

TL;博士;

當心第二個application.js參考。

服用 jquery_ujs.js 對我有用。

仔細查看文件application.html.erb ,看看它是否指的是 jquery.js 和 jquery_ujs.js。 如果是這樣,只需將 jquery_ujs.js 取出,刷新瀏覽器並重試。

另外,看一下頁面源碼,看看是否同時引用了jquery_ujs和jquery。 如果是這樣,請在源文件中搜索對該 jquery_ujs 的引用。

為我工作,謝謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM