我在rails应用程序上有一个ruby,我在javascript文件中使用了一些图像,如下所示:
var urlshapes = "/assets/shapes/";
// image loader
imageURLs.push(urlshapes + "isit.png");
imageURLs.push(urlshapes + "ec.png");
imageURLs.push(urlshapes + "bc.png");
imageURLs.push(urlshapes + "bb.png");
imageURLs.push(urlshapes + "io.png");
loadAllImages();
使用WEBrick服务器它可以工作,但是当我上传到heroku服务器时,我得到了这个错误:
我已阅读此https://devcenter.heroku.com/articles/rails-4-asset-pipeline,结果我在我的Gem文件中添加了此行gem 'rails_12factor', group: :production
,但我仍然收到错误。
我该怎么办?
Rails版本:4.1.5 Ruby版本:2.1.2
答案 0 :(得分:1)
好像你使用asset pipeline。这意味着资产在开发和生产之间有不同的路径。您需要使用image path helpers在每个环境中获取正确的路径/ URL。 image_path帮助程序可能就是您所需要的。问题是这是一个Ruby方法,你想用Javascript代码调用它。有两种解决方案:
imageURLs.push("<%= image_path('isit.png') %>")
<script>
标记。 e.g:
<div data-images="['<%= image_path('1.png') %>', '<%= image_path('2.png') ']">
要么
<%= javascript_tag("images = ['#{image_path("1.png")}']") %>
等等。
答案 1 :(得分:0)
在config / environments / production.rb中,您是否将其更改为true,如下所示:
config.serve_static_assets = true
Heroku预先将资产编译为公共/资产,因此您需要更改配置设置。
答案 2 :(得分:0)
我将所有内容放在公用文件夹中并更改为:
var urlshapes = "/shapes/";
// image loader
imageURLs.push(urlshapes + "isit.png");
imageURLs.push(urlshapes + "ec.png");
imageURLs.push(urlshapes + "bc.png");
imageURLs.push(urlshapes + "bb.png");
imageURLs.push(urlshapes + "io.png");
loadAllImages();