我的应用程序有一个控制器,它使用一个名为“special”的不同布局:
class SessionsController < ApplicationController
layout "special"
...
end
所以我创建了一个新的layouts/special.html.erb
:
<!DOCTYPE html>
<html>
<head>
<title></title>
<%= stylesheet_link_tag "special" %>
<%= csrf_meta_tags %>
</head>
<body>
<%= yield %>
</body>
</html>
我还创建了一个新的相应stylesheets/special.css
问题是当我尝试使用“特殊”布局访问页面时,我遇到了异常:
链轮::助手:: RailsHelper :: AssetPaths :: AssetNotPrecompiledError 在Sessions#new
中
special.css isn't precompiled
我已经执行了bundle exec rake assets:precompile
,但它没有解决问题。
怎么了?如何将样式表与rails中的布局相关联?
答案 0 :(得分:3)
默认情况下,Rails仅预编译您的application.css
和application.js
个文件(或其.scss
,.less
或.coffee
等效文件。
如果您想要预编译其他文件,则必须将其添加到precompile
上的config/environments/production.rb
数组中,如下所示:
config.assets.precompile += %w( special.css )
请参阅:http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets
答案 1 :(得分:0)
只需对接受的答案进行一点修改-文档建议在config/initializers/assets.rb
中添加预编译的资产。这很有意义,因此它们在所有环境中都可用,而不必重复为每个环境设置的配置。因此,我创建了该文件并添加了完全合格的config属性:
Rails.application.config.assets.precompile += %w( special.css )