Rails资产管道仅返回错误404

时间:2015-05-11 17:54:57

标签: javascript ruby-on-rails ruby ruby-on-rails-4

很抱歉这个问题,因为我是一个红宝石和rails新手。如何让资产管道在rails上运行?

在我的开发环境中,我有javascript的个别文件,它们通常在 site / app / views / stats / index.html.erb 中加载:

<%= javascript_include_tag "/assets/jquery.js" %>
<%= javascript_include_tag "/assets/stats/donut.js" %>
<%= javascript_include_tag "/assets/stats/vbars.js" %>
<%= javascript_include_tag "/assets/stats/progress.js" %>
<%= javascript_include_tag "/assets/stats/gauge.js" %>
<%= javascript_include_tag "/assets/stats/hbars.js" %>
<%= javascript_include_tag "/assets/stats/widget_grid.js" %>
<%= javascript_include_tag "/assets/stats/widget.js" %>

在生产环境中,它无法正常工作。所以我试图让开发人员环境使用资产管道。这是我到目前为止所得到的:

site / config / enviroment / development.rb 我已配置

config.assets.debug = false
config.assets.compile = false
config.assets.digest = true

然后停止我的rails服务器并运行

bundle exec rake assets:precompile

并重新启动rails服务器。

然后在 site / app / views / stats / index.html.erb 我刚刚更换了javascript includes for

<%= javascript_include_tag "stats" %>

并创建了包含

site / app / assets / javascripts / stats.js 文件
//= require stats/donut
//= require stats/vbars
//= require stats/progress
//= require stats/gauge
//= require stats/hbars
//= require stats/widget_grid
//= require stats/widget

我做错了什么?任何帮助表示赞赏。

更新:问题正在发生,因为我忘了在stats.js中包含第三方库。最初包括 site / app / views / stats / index.html.erb

<%= javascript_include_tag "/assets/third-party/d3.min.js" %>

只需将其删除并将其添加到 stats.js

即可
//= require third-party/d3.min.js

感谢所有帮助过的人!

1 个答案:

答案 0 :(得分:0)

你必须告诉Rails预编译该文件。默认情况下,它与application.js一起使用,但如果您创建新的清单文件,则必须包含它。在config/initializers/assets.rbproduction.rb添加:

Rails.application.config.assets.precompile << ['stats.js']

希望它有所帮助。

这篇文章非常有助于理解资产管道的工作原理:http://www.reinteractive.net/posts/116-12-tips-for-the-rails-asset-pipeline