【问题标题】:Why is Rails not reloading my javascript files when I move between pages with an anchor?当我在带有锚点的页面之间移动时,为什么 Rails 不重新加载我的 javascript 文件?
【发布时间】:2015-03-29 20:55:15
【问题描述】:

更新 2: 我通过将 javascript 直接移动到我的视图文件中暂时解决了我的问题,但我仍然想知道为什么当我使用 <a> 标签在页面之间移动时 Rails 没有重新加载我的 javascript 文件。

更新 1: 我尝试将代码分成 2 个视图,一个用于语言,一个用于文本更改。当我使用语言页面中的锚链接到文本页面时,即使我事先没有在语言页面上做任何其他事情,我的 home.js 文件的内容也不会再次运行。在没有再次运行 document.ready javascript 的情况下销毁和创建视图的事情正在发生。

原文: 我正在尝试构建一个具有多种语言支持的 Rails 应用程序,但是它将 javascript 分解到页面下方。在我看来,我有 2 个锚点可以在英语和法语之间切换,单击时刷新页面和所有文本,支持或不支持语言。这是意料之中的。

然而,当我点击这些链接中的任何一个后,我为页面下方的文本区域定义的 keyup javascript 事件会完全中断。我在 Rails 或 javascript 控制台中没有收到任何错误,它只是停止工作。

更令人困惑的是,虽然代码在我单击锚点之前有效,但我正在将 textarea 中的文本从页面加载时的默认值更改。单击锚点后,文本按预期更改回默认页面文本,并且我的 javascript 中断。如果我在页面中断后使用F5 刷新页面,不仅 javascript 工作并且新语言设置保存,而且 textarea javascript 仍在工作时的最旧值重新出现。

事件序列示例:

  1. 初始页面加载,默认文本为“Try it out!/72y 17 0u7!”
  2. 将文本更改为“试试看”,其他文本区域更改为“72y 17”
  3. 更改语言,重新加载页面,默认文本是“试试看!/72y 17 0u7!”,javascript keyup 事件停止工作,但我将第一个文本区域改为说“Hello World”
  4. 用 F5 刷新页面,javascript keyup 事件再次起作用,textareas 现在显示“Try it/72y 17”

home.html

<h3><%= t('intro-title') %></h3>
<p><%= t('intro-paragraph') %></p>
<a href="/?locale=en" type="button">English</a>
<a href="/?locale=fr" type="button">Français</a>

<textarea id="l33tify-in">Try it out!</textarea>
<textarea id="l33tify-out" disabled="true">72y 17 0u7!</textarea>

home.js

$( document ).ready(function() {
    $('#l33tify-in').keyup(function(){
        $.get('/l33tify_text', { 'l33tify_me' : $(this).val() }, function(data) {
            $('#l33tify-out').val(data['l33tified']);
        });
    });
});

home_controller.rb

class HomeController < ApplicationController
  before_action :set_locale

  def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
  end

  def index
  end
end

【问题讨论】:

    标签: javascript jquery html ruby-on-rails ruby


    【解决方案1】:

    不确定您是否还在为此苦苦挣扎,但请尝试关闭 turbolinks。类似问题报告here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      相关资源
      最近更新 更多