Ruby on rails Rails 6中的ActionView::Template::Error(资产不在资产管道中)

Ruby on rails Rails 6中的ActionView::Template::Error(资产不在资产管道中),ruby-on-rails,Ruby On Rails,我在app/assets/images文件夹中放置了一个图像“jumbotron.jpeg”,我在视图中使用它: <div class="jumbotron" style="background: url(<%= image_path 'jumbotron' %>); no-repeat center center fixed;"> 这里还有另一个与同一问题相关的话题: 我发现的解决方案是在config/environments

我在app/assets/images文件夹中放置了一个图像“jumbotron.jpeg”,我在视图中使用它:

<div class="jumbotron" style="background: url(<%= image_path 'jumbotron' %>);  no-repeat center center fixed;">
这里还有另一个与同一问题相关的话题:

我发现的解决方案是在config/environments/production.rb中将以下内容设置为true:

它确实可以工作,但会使加载页面的速度非常慢。这篇文章还解释了为什么将config.assets.compile设置为true是个坏主意:

因此,在设置config.assets.compile=false后,我尝试在本地预编译这些资产

我更改了config/environments/production.rb以添加以下行:

  config.assets.prefix = "/dev-assets"
然后跑:

rake assets:precompile 
它在public/文件夹中创建了一个dev assets文件夹

在服务器上部署之前,我将文件推送到版本控制:

git从本地环境推送到Github git在我的生产服务器上拉一个VPS,然后: 捆绑包安装-部署-无需开发测试 bundle exec rake资产:预编译数据库:migrate RAILS\u ENV=production 乘客配置重启应用程序$pwd 但我还是得到了同样的错误:

ActionView::Template::Error (The asset "jumbotron" is not present in the asset pipeline.):
编辑:解决方案如下所述,需要文件的全名。作为旁注,原始文件是一个.jpeg文件,我最初编写了该文件,它触发了错误。我后来注意到Rails实际上已经将文件扩展名从.jpeg更改为.jpg

如前所述:

从3.0开始,JPEG将自动转换为.jpg,并使用实际 预编译和沙盒预编译错误。如果你有什么 与image_标记'image.jpeg'类似,它与AssestNotPrecompiled一起中断 错误将文件重命名为image.jpg将修复此问题

如果你改变了怎么办 到

您需要完整的文件名

如果更改会发生什么 到


您需要完整的文件名

如何部署?如果使用capistrano,则将在cap生产部署上编译资产。无需从VPS中提取代码,您只需覆盖刚刚推送到git的所有更改。这似乎是一个非常奇怪的过程,我编辑了这个问题以使其更清楚:我在服务器上运行git pull,从Github获取代码。我现在不使用capistrano,上面的1到5点是我从开发到生产的实际部署方式;另外,VPS上是否存在jpeg?好的。那么,RAILS_ENV=production参数是否有任何错误?如果更改为需要完整文件名,会发生什么情况?如何部署?如果使用capistrano,则将在cap生产部署上编译资产。无需从VPS中提取代码,您只需覆盖刚刚推送到git的所有更改。这似乎是一个非常奇怪的过程,我编辑了这个问题以使其更清楚:我在服务器上运行git pull,从Github获取代码。我现在不使用capistrano,上面的1到5点是我从开发到生产的实际部署方式;另外,VPS上是否存在jpeg?好的。那么,RAILS_ENV=production参数是否有任何错误?如果更改为需要完整文件名会发生什么情况谢谢,这就解决了问题!实际上,编译之前的原始图像有.jpeg扩展名。但是Rails将它们转换为.jpg,这可能是最初的问题。@NZisKool很高兴您解决了这个问题。我可以谦恭地建议您不要使用git-pull部署,您将面临巨大的头痛。我不知道你的建议里有什么,但是你不应该这么做的原因有很多,谢谢你的建议。我应该改用capistrano?@nziskool现在有很多不同的rails部署选项,但是Capistrani可能是其中最成熟的。需要一点头脑清醒,但一旦学会并编写脚本,就需要在本地机器上的命令行中部署一行程序。那里有很多帮助。capistrano rails gem是您的朋友我们也遇到过这个问题,特别是.jpeg扩展名。将.jpeg重命名为.jpg修复了它,但这是一个多么奇怪的问题!谢谢,这就解决了!实际上,编译之前的原始图像有.jpeg扩展名。但是Rails将它们转换为.jpg,这可能是最初的问题。@NZisKool很高兴您解决了这个问题。我可以谦恭地建议您不要使用git-pull部署,您将面临巨大的头痛。我不知道你的建议里有什么,但是你不应该这么做的原因有很多,谢谢你的建议。我应该改用capistrano?@nziskool现在有很多不同的rails部署选项,但是Capistrani可能是其中最成熟的。需要一点头脑清醒,但一旦学会并编写脚本,就需要在本地机器上的命令行中部署一行程序。那里有很多帮助。卡皮斯特拉诺酒店
ls gem是您的朋友我们也遇到过这个问题,特别是使用.jpeg扩展名。将.jpeg重命名为.jpg修复了它,但这是一个多么奇怪的问题!
rake assets:precompile 
ActionView::Template::Error (The asset "jumbotron" is not present in the asset pipeline.):