Rails 上的 Javascript 和 JQuery UI:不刷新页面就不会显示

Posted

技术标签:

【中文标题】Rails 上的 Javascript 和 JQuery UI:不刷新页面就不会显示【英文标题】:Javascript and JQuery UI on Rails: won't display without page refresh 【发布时间】:2013-08-21 02:21:26 【问题描述】:

我是 Ruby on Rails 和 javascript 的新手,所以不知道如何继续。我有一个应用程序,它使用了一些时髦的 JQuery UI 组件,特别是 Datepicker 和 Tabs。它们都可以工作,但只有一次我至少刷新了一次页面;在第一次加载时,我只得到 html,就好像 jquery javascript 文件不存在于 app/assets/javascripts 中一样。

有什么想法吗?第一次加载失败,如何自动刷新页面?

application.js:

$(function() 
  $("#event_start_time").datepicker();
  $("#tabs").tabs();
);

view.html.erb:

<div id="tabs">
  <ul>
    <li><a href="#students"><span>Students</span></a></li>
    <li><a href="#teachers"><span>Teachers</span></a></li>
  </ul>
  <div id="students">
    <%= render 'sessions/student_login_details' %>
  </div>
  <div id="organisations">
    <%= render 'sessions/teacher_login_details' %>
  </div>
</div>

application.html.erb:

  <head>
    <%= yield :scripts %>
    <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
    <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
  </head>
  <body>
    <%= render 'layouts/header' %>
    <div class="container">
      <%= yield %>
      <%= render 'layouts/footer' %>
    </div>
  </body>

编辑:好的,解决了。那是台球室里的 Turbolinks,里面有铅管。这个 gem https://github.com/kossnocorp/jquery.turbolinks 有助于解释为什么它偶尔会导致 Javascripts 无法正常运行。谢谢大家!

【问题讨论】:

您看过浏览器开发工具吗?它对 JQuery 文件说了什么?是否已加载?任何控制台输出? 已加载,是的,但显示不正确。没关系,我相信是 Turbolinks 导致 javascripts 无法正常显示。 【参考方案1】:

您正在使用 turbolinks,但未在 application.js 中包含 turbolinks js 文件

//= require turbolinks

【讨论】:

抱歉,我在问题中编辑的代码有点过多 - //=require turbolinks 已经存在。

以上是关于Rails 上的 Javascript 和 JQuery UI:不刷新页面就不会显示的主要内容,如果未能解决你的问题,请参考以下文章

RAILS 轨道资产:预编译失败

未捕获的 ReferenceError:未定义 jstz

跟踪网站上的用户交互

ruby on rails 6 - 在javascript中动态引用图像

在rails 5中单击浏览器的后退按钮后如何避免返回?

Rails:多步表单上的动态选择未保持选中状态