You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7集成Turbo与jQuery异常:仅首次页面加载生效

Rails 7 Turbo 集成 Materialize CSS 与 jQuery 时页面切换后 $(document).ready 失效问题

在Rails 7环境中使用默认安装的Turbo,同时集成Materialize CSS与jQuery,遇到以下问题:

  • jQuery的$(document).ready相关函数仅在首次页面加载时正常运行
  • 后续通过Turbo进行页面切换后,该函数完全失效

已尝试document.addEventListener('turbolinks:load',...)这类广泛推荐的解决方案,但均无效果,目前甚至考虑移除Turbo。

经排查,首次加载正常是因为Turbo不会重新加载页面头部,但后续页面切换后函数无法触发。

相关代码

application.js

// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
import "@hotwired/turbo-rails"
import "controllers"


$(document).ready(function(){
    $('.sidenav').sidenav();
    console.log('Turbolinks finished loading the page');
});

页面头部代码

<head>
    <title>Remind</title>
    <%= favicon_link_tag asset_path('favicon.ico') %>
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">  
    <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
    <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
    <%= javascript_importmap_tags %>
    
</head>

内容的提问来源于stack exchange,提问作者Boenne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:12:40