相关疑难解决方法(0)

Rails 4:如何使用带有turbo-links的$(document).ready()

我试图组织JS文件"rails way"时,在我的Rails 4应用程序中遇到了一个问题.他们以前分散在不同的观点中.我将它们组织成单独的文件,并使用资产管道进行编译.但是,我刚刚了解到,当打开turbo-linked时,jQuery的"就绪"事件不会触发后续点击.第一次加载页面时它可以工作.但是当你点击链接时,内部的任何内容ready( function($) {都不会被执行(因为页面实际上并没有再次加载).好解释:这里.

所以我的问题是:在启用turbo-links时,确保jQuery事件正常工作的正确方法是什么?您是否将脚本包装在特定于Rails的侦听器中?或者也许rails有一些魔力让它变得不必要?文档对于它应该如何工作有点模糊,特别是关于通过像application.js这样的清单加载多个文件.

javascript jquery asset-pipeline turbolinks ruby-on-rails-4

417
推荐指数
9
解决办法
17万
查看次数

Rails,点击通过link_to帮助后javascript没有加载

当我在rails中使用link_to helper时,我在加载我的javascript时遇到了一些问题.当我手动输入带有'localhost:3000/products/new'的url或重新加载页面时,javascript会加载,但是当我通过下面所写的链接时,jQuery $(document).ready将不会加载到新页面上.

单击此链接时,链接_to,javascript无法加载:

<%= link_to "New Product", new_product_path %>
Run Code Online (Sandbox Code Playgroud)

products.js文件

$(document).ready(function() {
    alert("test");
});
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.提前致谢!

javascript jquery ruby-on-rails

78
推荐指数
4
解决办法
3万
查看次数

Rails 4 turbo-link阻止jQuery脚本工作

我正在构建一个Rails 4应用程序,我有一些分散的js文件,我试图包括"rails方式".我将jquery插件移动到/ vendor/assets/javascripts中,并更新了清单(application.js)以要求它们.当我在本地加载页面时,我看到它们正确显示.

但是,我从其中一个已编译的脚本中获得了不一致的行为.我有一个名为projects.js的特定于控制器的js文件,它通过以下方式在application.js中引用require_tree .:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap.min
//= require jquery.form.min
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

我看到文件被正确包含,并且它的工作时间有一半.另一半时间,projects.js中的东西似乎没有做任何事情(它主要是jquery动画和一些ajax请求).当它不起作用时,我会点击按钮几次,什么都不会发生,然后我会抛出这个错误:

Uncaught TypeError: Cannot read property 'position' of null 
turbolinks.js?body=1:75
Run Code Online (Sandbox Code Playgroud)

当脚本处于各个视图(错误的方式)时,这种情况从未发生过,所以我很确定问题不在于我的javascript代码.另一个可能相关的细节是projects.js中的东西被包装在一个$(document).ready(function(){.此外,我正在开发模式下进行测试,因此javascripts和css不会被资产管道组合.

知道这里发生了什么吗?我是Rails的新手,但我已尽力遵守所有惯例.

更新!

我的项目脚本不起作用时,它是可预测的.第一页加载每次都有效.然后我点击一个链接到一个使用我的project.js行为的新页面,第二个页面永远不会工作.我点击几次,最终抛出上面的错误.我仍然不确定为什么,但我怀疑这与涡轮连接有关.

javascript turbolinks ruby-on-rails-4

47
推荐指数
2
解决办法
3万
查看次数

Turbolinks加载事件不适用于页面刷新

像这样的Javascript代码

document.addEventListener("turbolinks:load", function() {
  $("p#hide_if_js").hide();
});
Run Code Online (Sandbox Code Playgroud)

当我在页面之间单击或使用浏览器后退按钮时,turbolinks可以正常工作。但是,当我刷新页面时,未加载javascript代码。如果我刷新几次,则什么也没有发生,但是,如果我单击指向其他背面的链接并单击返回页面,则将加载javascript代码。

看起来turbolinks:load在大多数事件上都起作用,但是页面重新加载却没有。该文档说,它“在初始页面加载时触发一次,并在每次访问Turbolinks之后触发”。怎么了?

我正在使用jquery.turbolinks gem和关联的兼容性代码。

javascript ruby-on-rails turbolinks

7
推荐指数
1
解决办法
2862
查看次数

DOMContentLoaded 在导航后不会触发,但在使用 javascript_pack_tag 时在页面重新加载时触发

我正在使用 React 和 Webpacker 处理 Rails 6 rc1 项目。

我目前正在使用javascript_pack_tag在 Rails 应用程序中渲染 React 组件。我试图不使用宝石,react-rails只是为了让事情变得简单。

今天,我发现了一个奇怪的行为,即从链接导航到页面后,我的 React 组件不会呈现。但是,在页面重新加载时,我的组件将被渲染。

Gemfile:

gem 'rails', '~> 6.0.0.rc1'
gem 'pg', '>= 0.18', '< 2.0'
gem 'puma', '~> 3.11'
gem 'sass-rails', '~> 5'
gem 'webpacker', '~> 4.0'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'bootsnap', '>= 1.4.2', require: false
gem 'devise', '~>4.6'

group :development, :test do
  gem 'pry-byebug'
  gem 'rspec-rails', '~> 3.8'
end

group :development do
  gem 'web-console', '>= 3.3.0' …
Run Code Online (Sandbox Code Playgroud)

javascript dom ruby-on-rails reactjs webpack

5
推荐指数
1
解决办法
2191
查看次数