我用一个简单的带有索引函数的页面控制器做了一个基本的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

当前回答

我在开发环境中也犯了完全相同的错误。最后,我所需要做的就是修改它:

config.assets.manifest = Rails.root.join("public/assets")

到我的配置/环境/开发。Rb文件,它修复了它。我在开发中与资产相关的最终配置如下:

config.assets.compress = false  
config.assets.precompile += %w[bootstrap-alerts.js] #Lots of other space separated files
config.assets.compile = false
config.assets.digest = true
config.assets.manifest = Rails.root.join("public/assets")
config.assets.debug = true

其他回答

一个快速修复capistrano用户是把这一行到Capfile

# Uncomment if you are using Rails' asset pipeline
load 'deploy/assets'

我也有这个问题,试图在不预编译的情况下在生产环境中运行,仍然会抛出未预编译的错误。我不得不改变哪一行是注释应用程序。

  # If you precompile assets before deploying to production, use this line
  # Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  Bundler.require(:default, :assets, Rails.env)

您可能在使用的css中有语法错误。

执行此命令

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

它会给出一个异常,修正后就完成了。

谢谢

下面是快速解决方法:

如果你正在使用capistrano,那么就这样把它添加到你的部署中。

after 'deploy:update_code' do
  run "cd #{release_path}; RAILS_ENV=production rake assets:precompile"
end

帽部署

如果你认为你做的一切都很好,但仍然不走运,只要确保你/capistrano在最后运行touch tmp/restart.txt或同等的命令。我在不幸的名单上,但现在:)