Rails 3.1.0中的ActionView::Template::Error(application.css未预编译)

281

我创建了一个基本的Rails应用程序,其中包括一个简单的页面控制器,具有索引功能。当我加载页面时,会出现以下错误:

ActionView::Template::Error (application.css isn't precompiled):
    2: <html>
    3: <head>
    4:   <title>Demo</title>
    5:   <%= stylesheet_link_tag    "application" %>
    6:   <%= javascript_include_tag "application" %>
    7:   <%= csrf_meta_tags %>
    8: </head>
  app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__43625033_88530400'

Gemfile

source 'http://rubygems.org'

gem 'rails', '3.1.0'

# Bundle edge Rails instead:
# gem 'rails',     :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'

gem 'execjs'
gem 'therubyracer'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
end

gem 'jquery-rails'

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'

group :test do
  # Pretty printed test output
  gem 'turn', :require => false
end

7
执行 "bundle exec rake assets:precompile" 看起来可以解决问题,但为什么它不直接起作用呢? - Chris Muench
10
即使运行了 "bundle exec rake assets:precompile",我在生产环境中仍然遇到相同的问题。请您帮忙翻译。 - Lucas Renan
14个回答

1

在Heroku上修复此问题的另一种方法:确保您的Rakefile已提交并推送。


0
在Heroku服务器上(只读文件系统), 如果您想要运行时编译CSS(虽然不建议但您可以这样做),请确保您已经进行了以下设置 -
# inside config/application.rb
config.assets.enabled = true
config.assets.prefix = Rails.root.join('tmp/assets').to_s

# If you are using sass then keep gem outside of asset group
 gem 'sass-rails',   '3.1.4'

# inside config/environments/production.rb
config.assets.compile = true

0

你可能在使用的 CSS 中有一个 语法错误

运行此命令

$ bundle exec rake assets:precompile RAILS_ENV=development --trace

它会抛出异常,修复它就可以了。

谢谢


0
如果您认为自己已经按照要求完成了所有步骤但仍然遇到问题,确保在最后运行touch tmp/restart.txt或者类似的命令。我曾经也遇到过这样的问题,但现在已经解决了 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接