首页 > 解决方案 > Rails:资产不适用于 Heroku

问题描述

资产不适用于 Heroku (js/jQuery/image)

我是 ruby​​ 新手,我有一个小问题,我创建了一个可以在本地完美运行的登录页面(图像正在显示,js 上的动画也可以正常工作)。

但是在 Heroku 上,图像仍然存在,但动画不起作用。

有一些奇怪的东西,即使当我检查控制台时它正在工作,我也有很多错误:

Failed to load resource: the server responded with a status of 404 (Not Found)
font-awesome.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
application-18ac3fd2669832ec776c17e2e795d1fa260c46da2ba1ea9854a54227ada3a7cd.js:6 Uncaught TypeError: Cannot read property 'breakpoints' of undefined
    at application-18ac3fd2669832ec776c17e2e795d1fa260c46da2ba1ea9854a54227ada3a7cd.js:6
    at application-18ac3fd2669832ec776c17e2e795d1fa260c46da2ba1ea9854a54227ada3a7cd.js:6
jquery.min.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
pages.scss:1 Failed to load resource: the server responded with a status of 404 (Not Found)
jquery.scrollex.min.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
banner.jpg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
pic02.jpg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
pic01.jpg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
jquery.scrolly.min.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
skel.min.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
util.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
main.js:1 Failed to load resource: the server responded with a status of 404 (Not Found)
pic03.jpg:1 Failed to load resource: the server responded with a status of 404 (Not Found)
font-awesome.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
pages.scss:1 Failed to load resource: the server responded with a status of 404 (Not Found)

我有一个调用脚本的 index.html.erb 页面:

<!-- Scripts -->
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/jquery.scrollex.min.js"></script>
<script src="assets/js/jquery.scrolly.min.js"></script>
<script src="assets/js/skel.min.js"></script>
<script src="assets/js/util.js"></script>
<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
<script src="assets/js/main.js"></script>

我的脚本在一个文件夹中app/assets/javascripts/js

非常感谢!

标签: ruby-on-railsrubyasset-pipelineassets

解决方案


像这样使用它是不对的:

<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/jquery.scrollex.min.js"></script>
<script src="assets/js/jquery.scrolly.min.js"></script>
<script src="assets/js/skel.min.js"></script>
<script src="assets/js/util.js"></script>
<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
<script src="assets/js/main.js"></script>

看看这个:The Asset Pipeline

您应该将所有 js 文件放入app/assets/javascriptswithout jquery.min.js,因为此库默认包含 rails。

我相信javascripts/application.js应该是这样的(默认情况下):

//= require jquery
//= require jquery_ujs
//... example 
//= require_tree .

//= require_tree .会自动映射javascripts所有 js 文件的文件夹。

//= require rails-ujs像上面那样编辑后删除这一行。

app/views/layouts/application.html.erb应该是这样的:

<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

更新

你应该像这样pages.scss放入assets/stylesheets/并在里面创建一个文件assets/stylesheets/custom.scsscustom.scss

@import "pages";

推荐阅读