Heroku Rails 4资产正在预编译但失败

时间:2015-01-20 11:27:40

标签: ruby-on-rails ruby-on-rails-4 heroku asset-pipeline

在公共文件夹的index.html.erb中,我将登录页面保存到我的网站。我还没有真正的网站,因此只需要有一个登陆页面。

此着陆页有很多图片。图像全部存储在app/assets/images中。当我运行git push heroku时,我的资产会进行预编译,从那时起,我的所有图片都会以public/assets格式进入imagename-hash.png文件夹。

在我用作着陆页的index.html.erb中,我尝试通过<img class="android-device" src=<%= asset_path("nexus_large.png")%> >访问这些图片,我希望asset_path返回给我nexus_large-hash.png。出于某种原因,它没有。当我进入网页时,我的图像都没有被加载。尝试检索资产时出现404错误。

我的Gemfile中有rails-12factor作为宝石。我不明白我做错了什么。

通过heroku run bash我确认资产已预先编译并放入public/assets。通过Rails控制台中的helper.asset_path("nexus_large.png"),我确认它应该返回/assets/nexus_large-hash.png

我做错了什么?

编辑:经过进一步检查,如果我要去mywebsite.com/assets/nexus_large-hash.png,我会看到合适的图像。因此100%预编译是成功的。它链接到失败的图像。

1 个答案:

答案 0 :(得分:0)

我明白了。这归结为想要过度优化而不是以简单的方式做事。

我不想创建另一个控制器来容纳一个可以渲染我的目标网页的空操作。我觉得有更好的方法。所以,我做的是我使用Rails机制来呈现Public index.html,当它存在并且你在根目录时。从某种意义上说,它是一个登陆页面。问题是它对Ruby没有反应。即使您将其更改为index.html.erb,它也不会响应您请求的更改。

因此,解决方案非常简单,只需使用控制器操作,并在root to: 'controller#action'中使用routes.rb。然后,所有助手都能很好地工作。