Javascript rails应用程序样式设置全部失败
我有一个rails应用程序,我刚刚将其移动到服务器。在某些地方,某些配置已关闭,我的网页样式也未加载。rails控制台为每个资产(图像、javascript和样式表)发出:Javascript rails应用程序样式设置全部失败,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有一个rails应用程序,我刚刚将其移动到服务器。在某些地方,某些配置已关闭,我的网页样式也未加载。rails控制台为每个资产(图像、javascript和样式表)发出:ActionController::RoutingError(没有与[GET]“/images/search icon.png”)匹配的路由) 这会发生在哪里 主要区别在于我是在生产模式下启动的。您没有使用资产助手,因此路径与生产中生成的资产管道路径不匹配。阅读,尤指这一部分 您还没有显示用于生成路径的代码,因此我无法提供具体
ActionController::RoutingError(没有与[GET]“/images/search icon.png”)匹配的路由)
这会发生在哪里
主要区别在于我是在生产模式下启动的。您没有使用资产助手,因此路径与生产中生成的资产管道路径不匹配。阅读,尤指这一部分
您还没有显示用于生成路径的代码,因此我无法提供具体的解决方案,但上面的链接提供了有关CSS与ERB以及您是否使用Sass模板的信息。Rails 3.1将其作为“资产管道”。随着它的引入,资产(图像、样式表、Java脚本)的服务在生产中的工作方式有所不同 在开发/测试环境中,rails应用程序通过基于配置的连接、缩小和/或压缩来处理资产服务 但在生产环境中,预计资产将通过以下rake任务预编译到公共目录:
bundle exec rake assets:precompile
您的应用程序可以配置为rails应用程序或(按照约定)web服务器提供服务的资产
看起来您尚未预编译这些资产,这就是rails无法为不存在的文件提供服务的原因
更多详情请访问
这会发生在哪里
再加上答案,这是因为
默认情况下,无论何时将应用程序推向生产环境,Rails都会将您的资产连接到您定义的任何应用程序中(通常是application.css
):
链轮用于指纹识别的技术是在名称中插入内容的散列,通常在末尾。例如,CSS文件global.CSS
global-908e25f4bf641868d8683022a5b62f54.css
这同样适用于您的图像
,js
,字体
,视频
,音频
资产
当您在生产环境中调用图像资源时,Rails只能访问
public
文件夹(precompilation
将所有资源放入public/assets
):
public/assets/images/search图标[[hash]].png
在CSS中调用url(“assets/images/search icon.png”)
,或者在应用程序的任何部分显式引用图像都是行不通的。您必须引用预编译的资产,这可以通过以下各种方式实现:
#app/assets/stylesheets/application.scss
.class {
background: image-url("search-icon.png");
}