bra*_*rad 64 ruby-on-rails heroku
我花了大部分时间试图在我的heroku应用程序上加载图像.我尝试的所有东西都在本地工作,但在部署到heroku之后却没有.
我有png文件保存在我的资产下的images文件夹中.我在我的CSS中使用语法引用这些图像,例如;
#signin {
background: url(<%= asset_path 'sf.png' %>);
background-size: 100%;
}
Run Code Online (Sandbox Code Playgroud)
在heroku中,当我检查背景时,assets/sf.png链接就在那里,但是当你点击它时它会显示一个损坏的图像,表明它没有正确加载.
我试着切换config.serve_static_assets = false
中production.rb
真假既不作品之间的文件.
我也有
group :production do
gem 'pg'
gem 'rails_12factor'
end
Run Code Online (Sandbox Code Playgroud)
预编译总是成功的.
Rails 4.关于还有什么可以尝试的任何想法?
小智 92
我需要结合几种解决方案才能完成这项工作,这就是我所做的:
的Gemfile
gem 'rails_12factor', group: :production
Run Code Online (Sandbox Code Playgroud)
在我的Heroku控制台中
heroku labs:enable user-env-compile -a yourapp
Run Code Online (Sandbox Code Playgroud)
production.rb
config.serve_static_assets = true
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'
config.assets.compile = true
Run Code Online (Sandbox Code Playgroud)
我不需要在本地预编译资产.
Pra*_*thi 55
你需要做两件事来解决它.首先,在production.rb
文件中将这两行从false更改为true .
config.assets.compile = true
config.assets.digest = true
Run Code Online (Sandbox Code Playgroud)
其次,如果你的图像有这样的语法
background: url("imgo.jpg")
Run Code Online (Sandbox Code Playgroud)
将其更改为
background: image-url("image.jpg")
Run Code Online (Sandbox Code Playgroud)
我希望它能完成你的工作.
bra*_*rad 27
我遇到的另一个问题是,在将其加载到heroku之前,我在本地预编译了我的资源.这需要您遵循一组不同的步骤,这些步骤可以在下面找到.如果您在本地预编译资产,则必须执行这些步骤,否则您对资产文件夹所做的任何更新都不会反映在prod中.
https://devcenter.heroku.com/articles/rails-asset-pipeline
RAILS_ENV=production bundle exec rake assets:precompile
commit
和push
服务器.
小智 12
我有一个类似的问题,我用custom.css.scss中的以下行解决了它.告诉我这是否适合你.
background: image-url('sf.png')
Run Code Online (Sandbox Code Playgroud)
引用资产的方式不同,具体取决于您使用的是ERB还是Sass,请参阅Ruby on Rails指南.
归档时间: |
|
查看次数: |
42839 次 |
最近记录: |