Heroku上的Rails 5.x.x(没有路由匹配[GET] /资产)

时间:2017-04-09 18:25:34

标签: ruby-on-rails heroku

我是Rails的新手。部署到Heroku后遇到问题。控制器中指示的所有资产都不起作用。在当地一切正常。

ActionController::RoutingError (No route matches [GET] "/assets/freelancer.min.js"):
ActionController::RoutingError (No route matches [GET] "/assets/portfolio/submarine.png")

来自控制器的资产示例:

<img src='assets/portfolio/submarine.png' class='img-responsive' alt='Submarine'>

<!-- Theme JavaScript -->
<script src='assets/freelancer.min.js'></script>

有没有人知道发生了什么?

更新

请回复@pythia。这适用于图像,但我无法使用java脚本和样式表。看起来Rails无法找到文件,但我检查了JS和CSS,它们存在。 我正在使用的代码是:

对于JS来说

<%= javascript_include_tag 'freelancer.min.js'%>

for css:

<%= stylesheet_link_tag "bootstrap.min.css", rel: "stylesheet"%>

错误日志:

ActionController::RoutingError (No route matches [GET] "/javascripts/contact_me.js")
ActionController::RoutingError (No route matches [GET] "/stylesheets/freelancer.min.css")

3 个答案:

答案 0 :(得分:1)

你需要使用像<%= image_tag %>这样的帮手,因为Rails&#39;资产管道预编译您的图像。它&#34;&#34;&#34;指纹&#34;每个图像,并在文件名的末尾添加一串字母数字字符。

所以你想要:

<%= image_tag "portfolio/submarine.png", class: "img-responsive", alt: "Submarine"%>

如果您的freelancer.min.js位于assets / javascripts文件夹中,它将被添加到您的application.js中,并且应该可以在整个应用中使用。

资产管道的Rails指南中有更多信息:

答案 1 :(得分:0)

您必须避免使用HTML标记并改为使用帮助程序:

<%= image_tag 'portfolio/submarine.png', class: 'img-responsive', alt: 'submarine' %>

以及脚本的 script_tag 帮助程序。

答案 2 :(得分:0)

问题解决了。我在这里描述过 - &gt; Rails Asset Pipeline is not loading my javascript file (why won't this code work

基本上,每个js文件都应包含在 config / initializers / assets.rb

示例:

Rails.application.config.assets.precompile += %w( freelancer.js )