Rails:如何将样式表与布局相关联?

时间:2012-03-20 04:17:50

标签: css ruby-on-rails ruby-on-rails-3

我的应用程序有一个控制器,它使用一个名为“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中的布局相关联?

2 个答案:

答案 0 :(得分:3)

默认情况下,Rails仅预编译您的application.cssapplication.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 )