问题标签 [rails-assets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1079 浏览

ruby-on-rails - Rails 应用程序资产未加载到开发环境中

每次我在本地启动我的 Rails 应用程序时,都没有显示任何 CSS。浏览器中的调试器显示get对所有带有指纹的资产文件的请求,但由于找不到文件,它们都失败了。以下是其中一个请求的样子:

GET http://localhost:3000/assets/announcements.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css?body=1

在 Rails 服务器控制台中,我收到一个 Rack App Error,以及一个NoMethodError针对undefined method 'Silence'. 以下是其中一个错误的样子:

2017-01-08 17:24:49 -0800: Rack app error handling request { GET /assets/normalize.self-cadbbf81015902777c37852b3ea54398335fd421c6c76891c077ec5954211bb4.css }

NoMethodError: undefined method 'silence' for #<Logger:0x007fe1062c1c78

两个错误日志(浏览器控制台和本地主机服务器控制台)都包含同一错误的多个再现,都指向资产(*.js 和 *.css)。

我搜索了无数 StackOverflow 帖子,但无济于事。出于某种原因,这也仅影响这一应用程序;我所有的其他 Rails 应用程序都运行良好。这是我的规格:

导轨版本:5.0.1

红宝石版本:2.3.1p112

我尝试过的事情:

assets:clean, assets:precompile,rm -rf /tmp/public/assetsdirectpories,所有之前的开发环境,从github重新克隆存储库和捆绑安装。

0 投票
0 回答
94 浏览

jquery - 使用 Rails-assets.org Jquery 时如何处理 UJS(或排除 Rails-assets gem 中的依赖项)

我最近开始使用 Rails-assets.org 并注意到,如果特定资产具有 jQuery 作为依赖项,它会在捆绑时安装来自 Bower 的版本。这复制了 Rails 应用程序中的 jQuery 包(假设使用了默认的“jquery-rails”gem)。

我很乐意只保留任一版本的 jQuery,但在尝试这样做时我发现了两个问题。

  1. 如果我从我的应用程序中排除“jquery-rails”gem,我将无法运行与“jquery-rails”打包在一起的“jquery_ujs”。我还没有找到只保留“jquery_ujs”的方法。那可能吗?

  2. 从 rails-assets.org 安装 gem 时排除 jQuery 依赖可能会更好,这样我就可以继续在 Rails 中使用默认的 jQuery gem。我用谷歌搜索这个没有成功。这可能吗?

我还想知道如果我同时安装了两个 jQuery 包会不会有问题。Rails 资产管道将选择其中哪一个?我试过了,没有任何错误,但这听起来不是最好的主意。

如果您能指出正确的方向或最佳实践建议,那就太好了。谢谢

0 投票
6 回答
4676 浏览

font-awesome - Rails 5 + Rails Assets + Fontawesome 不加载字体

通过rails-asset.org安装 Fontawesome并遵循默认说明,字体无法正确加载,我看到的只是框,表明生成的用于加载字体的 url 不正确。

在此处输入图像描述

0 投票
1 回答
855 浏览

ruby-on-rails - 多个清单文件的Rails 5问题

谢谢你的帮助。

我的问题

在我的 Rails 5 应用程序中,我有 2 个布局,因此我需要设置多个清单文件。

我做了什么

我做了以下事情:

  1. 这两个layouts有一个user.html.erb和一个main.html.erbhtml 文件,在那里我用正确的标签 my application.jsinuser.html.erb和 my main.jsfor链接main.html.erb
  2. 文件加载,如果我按照localhost:3000/assets/application.js清单中包含的 js 文件的全部内容显示,而 at/assets/main.js仅显示以下几行:

    /li>
  3. 我按照以下讨论中包含的说明使用多个清单文件进行 Rails 4 资产预编译,但它们不起作用

    /li>

我搜索了 Stackoverflow 并阅读了文档,但从未找到此问题的答案。我在用:

更新

在 main.js 文件中,我包含以下内容作为测试:

非常感谢您的帮助,我真的希望您能帮助我。最好的问候法布里齐奥·贝托利奥

0 投票
0 回答
89 浏览

ruby-on-rails-5 - 运行 rake 资产时部署失败:预编译

以下是 capistrano 日志:

暂存环境可以成功部署。另外,当我bundle exec rake assets:precompile在本地运行时,它也成功了。

所以错误在这里:

这是一个错误activerecord-5.0.2吗?现在我无法理解源代码,有什么帮助吗?

0 投票
0 回答
87 浏览

ruby-on-rails - 无法确定是否存在基于控制器的资产而没有 .js 扩展导轨

我为控制器添加了资产,并希望根据请求包含它们。

问题是它不包含该资产而不写入.js 控制器路径

布局页面上的代码是:

辅助方法:

资产在 admin/popular_schools其中 admin/popular_schools.js.coffee

<%= controller_specific_js = "#{params[:controller]}.js" %>

上面的行输出: admin/popular_schools.js并添加它。

网址是:http://localhost:3000/admin/popular_schools

资产.rb:

生产.rb

config.assets.compile = true

“#{params[:controller]}.js”中不指定.js的情况下如何运行它,因为通常它不好。

如果我删除 .js,它不会将其插入资产中,但如果我包含它,它就会开始出现。

另外,如果我使用以下代码:

它确实可以在不指定 .js 的情况下工作,但是如果我不想在 assets.rb 文件中包含任何控制器,它们会开始输出异常,该文件不包含在 assets.erb 中,但它确实包含在 assets 文件夹中,出于某些原因我这样做了不想将它们包含在 assets.rb 中

任何解决方法或约定?

0 投票
1 回答
1559 浏览

ruby-on-rails - 使用 jquery-ui 的 Rails 资产管道问题

更新

我从 jquery 网站下载了最新版本的 jquery 3.1 和 jquery-ui。不幸的是,函数的这个问题.effect()没有连接到资产管道。我包含了所有必需的 js 和 css 文件,但.effect()无法正常工作。

此问题仅与 Jquery-ui 有关,而 jquery 方法可以正常工作。我放弃了这个,做一个 git checkout,我现在不会使用 Jquery-ui 效果。

概括

我的资产管道工作正常,但由于我想使用 jquery-ui.effect()功能,我注意到浏览器控制台中的 jquery-ui.css 样式表存在问题。

在此处输入图像描述

我用 1.12.1/jquery-ui.js 在 rails 环境之外测试了这个函数,它工作正常。我可以将jquery-ui.css文件显示在.http://localhost:3000/assets/jquery-ui.css

我做了以下事情:

  1. 由于我的 jquery-ui.js 文件也是空的,因此//= require jquery2我的应用程序 js 中需要。这解决了问题jquery-ui.js
  2. 由于缺少 jquery-ui.css 文件,我执行了以下操作:
  3. 运行rm -rf public/assets删除该文件夹中的文件(我也尝试过rake assets:clean
  4. 运行 Rails 资产:在开发和生产中预编译
  5. 清除浏览器缓存并使用chrome匿名浏览

这没有解决任何问题,但我可以看到该文件,并且在生产中这个问题不存在。application.css 文件包含 jquery-ui.css。所以也许这.effect()不适用于css,但对于丢失的js文件?该效果在生产中也不起作用。

https://barteringapps.herokuapp.com/

请按照上面的链接,用 chrome 你可以在 application.js 文件的第 18610 行测试这个函数,设置一个断点,看看它<a id="signupFacebookButton">不会反弹。点击大底“用facebook注册”触发效果。

在此处输入图像描述

我想也许我没有反弹效果,但我可以看到开发中包含的文件,我想这不是问题。Mozilla 给我以下错误“http:localhost:3000/assets/jquery-ui.self-fingerprint.css 无法加载”(我没有清除 mozilla 现金)。

在此处输入图像描述

这就是我所知道的,我正在运行的 jquery 版本是 v2.2.4,它与 JqueryUi 兼容。我的 jquery-rails gem 版本是 4.2.2,而我的 jquery-ui 版本是以下 '~> 6.0', '>= 6.0.1'。

文档

我已阅读并遵循以下帖子的说明 Rails Assets Precompile just not working

我读了这个,但我没有跑rm Gemfile.lock找不到'jquery-ui' Rails 3.2

也许我现在的下一步将是执行 Git 并尝试在我的项目中手动包含 jquery-ui 文件。

代码

这是我的宝石文件

这是我的应用程序 js

这是我的应用程序 css

Main.js 包括使按钮弹跳的代码

用于设置按钮样式的 Main.css 代码

Gemfile.lock(相关行)

0 投票
0 回答
92 浏览

ruby-on-rails - in rails, javascript files load differently when switching between manifest files

I am using Rails and Bootstrap. I have a page that works perfectly when you just go to it in the browser. When I go to a different page on my site and then click a link that takes me back to the page, the javascript files load in a completely different order. This does not make sense to me as I load the js files in an explicit order as described in my logged_out.js manifest file:

In the browser page, it shows that when I load the page by just going to a url, the files are loaded in the order above. When I get to the page by going through a link, the order of the files are random. How do I fix this so that the files always load in this order?

Another thing to note: I have two manifest files: logged_out.js and logged_in.js. It seems like the order mismatch only happens when I am going from a page with the logged_in.js to the logged_out.js. I need two types of manifest files so there is so deleting either one or moving to one manifest file is not an option.

0 投票
0 回答
203 浏览

css - Rails 4.2 升级 - 没有路线匹配 [GET] "/assets/my_custom_scss_files.self.css"

我刚刚升级到 rails 4.2,我发现一些资产错误正在弹出(仅在生产中)。

这些涉及我创建的自定义 CSS 文件和 javascript 文件以及普通文件。

对应的文件production.rb如下:

除了application.css

他们都突然有了.self.以前.css不存在的东西。

它只是预编译的css而不是js.

0 投票
1 回答
270 浏览

ruby-on-rails - JavaScript 不能在 Heroku 部署中工作,但可以在本地工作

我在 app/assets/javascripts/expand.js 中写了这个函数

该脚本在本地运行良好并按预期运行,但是当我部署到 Heroku 时,它完全停止工作。

作为参考,这里是脚本所作用的 HTML:

调试我已经完成:

通过将 development.rb 中的一行更改为config.assets.debug = false. 我对rails的了解还不够,无法从中获得任何见解。

我用RAILS_ENV=production bundle exec rake assets:precompile. 并把它推了上去。

在那之后没有工作我尝试再次预编译git rm -r public/assets/

当这不起作用时,我使用 chrome 或 firefox 上的开发人员工具来查看我的生产环境中加载的所有 uglified js。我看到我的函数似乎已经加载,但是我没有看到我期望的功能,所以我也不知道那里发生了什么。

要查看我看到的内容,您可以访问https://www.shopperbot.com/about并查看资源https://www.shopperbot.com/assets/application-db55113ff25f4decb133ccb74aa98298822de2381cddc0ae3fa8c03b65180dd0.js。这是一个巨大的文件,因此您需要搜索可扩展这个词。该词是所讨论的功能所独有的。

我对 Rails 还是很陌生,所以我不知道从这里去哪里。我可以尝试更改我的 js 的位置,但我认为这并不理想。有没有人有什么建议?

因为这一切在我的本地环境中都可以正常工作......我怀疑我犯了一些初学者的错误,可以用我还没有找到的一些神奇的 1 班轮来解决。