簡體   English   中英

加載整個頁面時,Rails應用程序將javascript發送到客戶端,但是單擊link_to root_path時卻不發送?

[英]Rails app sending javascript to client when loading whole page, but not when clicking link_to root_path?

當我刷新Rails應用程序或在瀏覽器中的localhost:3000上按Enter時,我的應用程序會正確加載“ /”並顯示在控制台上

Started GET "/assets/*"

我的應用程序必須發送的所有資產。

但是當我單擊一個鏈接時

link_to root_path

它會在控制台中正確顯示GET'/',但並未對所有資產執行GET,因此導致網頁上使用我的JavaScript的所有元素均無法正常工作。

我該如何補救?

編輯:使用rails版本4.1.6

根據問題中提供的有限信息,我相信您很可能在Rails 4上,這是由於Turbolinks所致。

如果要禁用turbolink,可以按照以下步驟操作

  1. 從您的Gemfile中刪除gem'turbolinks'行。
  2. 從您的app / assets / javascripts / application.js中刪除// = require渦輪鏈接。
  3. 從您的app / views / layouts / application.html.erb中刪除兩個“ data-turbolinks-track” =>真正的哈希鍵/值對。
  4. 在application.html底部放置= javascript_include_tag'application'
  5. 在head標簽中的application.css頂部放置= stylesheet_link_tag'application',:media =>'all'

這些步驟由Steve Klabnik概述,此處從Rails 4中刪除Turbolinks。


以下不是您問題的直接答案,而是有關Turbolink的其他詳細說明。

Turbolinks的目的是通過不需要瀏覽器在每次頁面更改之間重新編譯JavaScript和CSS來減少頁面重新加載時間。 默認情況下,新的Rails 4應用程序已選擇加入。 由於未在每個請求上都重新加載JavaScript,因此您將無法再使用標准的DOMContentLoadedjQuery.ready()方法來觸發代碼。

Turbolinks在您需要加入的文檔上觸發補充事件,例如page:load

有關更完整的信息,如果您對此方向感興趣,可以在turbolinks github repo中查看其他詳細信息。

暫無
暫無

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

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