我正在将 Rails 3.2 应用程序部署到 Heroku。我正在根据https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar在本地预编译资产。
但我越来越
ActionView::Template::Error (devise/sessions.js isn't precompiled):
有人遇到过这种情况么?
确保预编译设计 JavaScript 的正确方法是什么。
谢谢!
我正在将 Rails 3.2 应用程序部署到 Heroku。我正在根据https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar在本地预编译资产。
但我越来越
ActionView::Template::Error (devise/sessions.js isn't precompiled):
有人遇到过这种情况么?
确保预编译设计 JavaScript 的正确方法是什么。
谢谢!
感谢您的所有建议。经过一番思考,我意识到问题在于如何将应用程序配置为调用特定于控制器的 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
到目前为止似乎工作正常。
再次感谢您的建议。
我的解决方案:
<%= javascript_include_tag "application", controller_name if controller_name != "sessions" %>
尝试运行rake assets:precompile
。
尝试将此添加到您的 config/environments/production.rb :
config.assets.precompile += %w( *.css *.js )
或指定您的文件。