为什么当我在带有锚点的页面之间移动时,Rails不重新加载我的javascript文件

Why is Rails not reloading my javascript files when I move between pages with an anchor?

本文关键字:新加载 Rails javascript 文件 我的 加载 移动 之间 为什么      更新时间:2023-09-26

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

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

原件:我正试图构建一个支持多种语言的Rails应用程序,但它正在进一步破坏javascript。在我看来,我有两个锚可以在英语和法语之间切换,点击后刷新页面和所有文本,无论是否支持语言。这是意料之中的事。

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

更令人困惑的是,当代码在我点击锚之前工作时,我正在将文本区域中的文本从页面加载时的默认值更改为默认值。单击锚点后,文本会按预期变回默认页面文本,并且我的javascript会中断。如果我在页面中断后用F5刷新页面,那么javascript不仅可以工作,新的语言设置也会保存,而且还会重新出现javascript仍在工作时的最旧值。

事件序列示例:

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

不确定您是否仍在为此而挣扎,但请尝试关闭涡轮链接。此处报告的类似问题