Javascript rails应用程序样式设置全部失败

Javascript rails应用程序样式设置全部失败,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有一个rails应用程序,我刚刚将其移动到服务器。在某些地方,某些配置已关闭,我的网页样式也未加载。rails控制台为每个资产(图像、javascript和样式表)发出:ActionController::RoutingError(没有与[GET]“/images/search icon.png”)匹配的路由) 这会发生在哪里 主要区别在于我是在生产模式下启动的。您没有使用资产助手,因此路径与生产中生成的资产管道路径不匹配。阅读,尤指这一部分 您还没有显示用于生成路径的代码,因此我无法提供具体

我有一个rails应用程序,我刚刚将其移动到服务器。在某些地方,某些配置已关闭,我的网页样式也未加载。rails控制台为每个资产(图像、javascript和样式表)发出:
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");
}