9

我正在将 Rails 3.2 应用程序部署到 Heroku。我正在根据https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar在本地预编译资产。

但我越来越

ActionView::Template::Error (devise/sessions.js isn't precompiled):

有人遇到过这种情况么?

确保预编译设计 JavaScript 的正确方法是什么。

谢谢!

4

3 回答 3

6

感谢您的所有建议。经过一番思考,我意识到问题在于如何将应用程序配置为调用特定于控制器的 javascript。万一其他人遇到这个问题,这就是我所做的。

我一直在通过布局文件中的以下标记加载特定于控制器的 .js。

<%= javascript_include_tag "application", params[:controller] %>

问题是,如果特定的 cotroller.js 文件不存在,这将失败。就我而言,登录页面失败,因为我没有创建 devise/sessions.js 文件。

我本可以创建这个文件,但我觉得这是一种混乱的方法。我不喜欢周围有很多空文件的想法。

相反,我从视图中显式调用特定于控制器的 javascript

<% javascript 'controller.js' %>    

在 application_helpers 中使用以下帮助程序

def javascript(*files)
    content_for(:head) { javascript_include_tag(*files) }
end

到目前为止似乎工作正常。

再次感谢您的建议。

于 2012-04-11T01:56:23.497 回答
5

我的解决方案:

<%= javascript_include_tag "application", controller_name if controller_name != "sessions" %>
于 2012-10-17T04:03:29.363 回答
3

尝试运行rake assets:precompile


尝试将此添加到您的 config/environments/production.rb :

config.assets.precompile += %w( *.css *.js )

或指定您的文件。

于 2012-04-10T16:10:16.887 回答