我是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")
答案 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 )