2013-03-11 71 views
1

我一直在为此奋斗了几天 - 我向我的rails应用程序添加了bootstrap(和其他一些宝石),但由于某种原因,相应的CSS文件没有渲染因此引导程序样式不显示。Rails:资产在开发中没有正确呈现

这里是我的文件的相关部分:

application.html.erbapp/views/layouts

<head> 
    <title>Myapp</title> 
    <%= stylesheet_link_tag "application", :media => "all" %> 
    <%= javascript_include_tag "application" %> 
    <%= csrf_meta_tags %> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script type="text/javascript" src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-dropdown.js"></script> 
</head> 

application.cssapp/assets/stylesheets

/* 
* This is a manifest file that'll be compiled into application.css, which will include all the files 
* listed below. 
* 
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, 
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path. 
* 
* You're free to add application-wide styles to this file and they'll appear at the top of the 
* compiled file, but it's generally better to create a new file per style scope. 
* 
*= require_self 
*= require_tree . 
*/ 

(有此文件夹中也有很多更多的CSS文件包括bootstrap_and_overrides.cssgmaps4rails.css)。

并且服务器日志的时候网页加载完毕:

$ rails server 
=> Booting WEBrick 
=> Rails 3.2.8 application starting in development on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
     SECURITY WARNING: No secret option provided to Rack::Session::Cookie. 
     This poses a security threat. It is strongly recommended that you 
     provide a secret to prevent exploits that may be possible from crafted 
     cookies. This will not be supported in future versions of Rack, and 
     future versions will even invalidate your existing user cookies. 

     Called from: /Users/me/.rvm/gems/ruby-2.0.0-p0/gems/actionpack-3.2.8/lib/action_dispatch/middleware/session/abstract_store.rb:28:in `initialize'. 
[2013-03-11 15:19:32] INFO WEBrick 1.3.1 
[2013-03-11 15:19:32] INFO ruby 2.0.0 (2013-02-24) [x86_64-darwin11.4.2] 
[2013-03-11 15:19:32] INFO WEBrick::HTTPServer#start: pid=94815 port=3000 


Started GET "/" for 127.0.0.1 at 2013-03-11 15:19:35 -0700 
Processing by HomeController#index as HTML 
    Rendered home/index.html.erb within layouts/application (2.8ms) 
    Trip Load (0.2ms) SELECT "trips".* FROM "trips" 
    Rendered layouts/_navigation.html.erb (62.0ms) 
Completed 200 OK in 143ms (Views: 141.0ms | ActiveRecord: 1.3ms) 

这实际上得到在Chrome渲染的源代码:

<head> 
    <title>Myapp</title> 
    <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" /> 
    <script src="/assets/application.js?body=1" type="text/javascript"></script> 
    <meta content="authenticity_token" name="csrf-param" /> 
<meta content="GfG+KCsrNZaChqWvUz/g5RqsdHrXOtumFzHaOjJmFQg=" name="csrf-token" /> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script type="text/javascript" src="https://raw.github.com/twitter/bootstrap/master/js/bootstrap-dropdown.js"></script> 
</head> 

而且我Gemfile

gem "bootstrap-sass", '~> 2.3.0.1' 
gem "simple_form" 

gem 'gmaps4rails' 

config/environments/development.rb

config.cache_classes = false 

# Log error messages when you accidentally call methods on nil. 
config.whiny_nils = true 

# Show full error reports and disable caching 
config.consider_all_requests_local  = true 
config.action_controller.perform_caching = false 

# Don't care if the mailer can't send 
config.action_mailer.raise_delivery_errors = false 

# Print deprecation notices to the Rails logger 
config.active_support.deprecation = :log 

# Only use best-standards-support built into browsers 
config.action_dispatch.best_standards_support = :builtin 

# Raise exception on mass assignment protection for Active Record models 
config.active_record.mass_assignment_sanitizer = :strict 

# Log the query plan for queries taking more than this (works 
# with SQLite, MySQL, and PostgreSQL) 
config.active_record.auto_explain_threshold_in_seconds = 0.5 

# Do not compress assets 
config.assets.compress = false 

# Expands the lines which load the assets 
config.assets.debug = true 

我将资产管道config/application.rb设置为true,我没有更改调试设置。我的RAILS_ENVdevelopment。据我了解,由于拨打require_tree .,导轨应该编译并提供所有CSS文件,包括boostrap_and_overrides.css.scss。我多次运行rake assets:precompilebundle exec rake assets:precompile,但我认为这不重要。我正在运行ruby 2.0.0p0(2013-02-24修订版39474)。

真的很奇怪的是我和我的合作伙伴在这个项目上有完全相同的代码(来自我们的github存储库),它在本地机器上工作,但它不适用于我的工作。有没有人有任何意见,发生了什么事?

+1

正确,您不需要在开发中预先编译资源(实际上,您可能希望删除/ public/assets中的所有文件)。你可以在Chrome浏览器的源代码视图中看到css的内容吗?我在css链接出现之前遇到过类似的问题,但它们都是空的。 – kasperite 2013-03-11 22:40:43

+0

不,在Chrome中呈现的CSS文件是空的(这很奇怪,因为它至少应包含'require'注释等)。对于它的价值,'manifest.yml'中指定的'public/assets'中的MD5'd文件也是空的(但是在开发过程中这不应该出现问题,对不对?) 我意识到事情可能正在发生对于我的团队中的其他人而不是我,因为他们可能有'RAILS_ENV = production',但我也尝试将我的设置设置为生产,但没有配置为服务资产,所以我不认为这是问题所在。 – 2013-03-11 23:21:36

+0

你可以在配置/环境中发布你的development.rb(你说它与其他人没有区别?)。我在生产中遇到了这个错误,但它是一个错误的独角兽设置(不是rails问题)。这当然是你当地的问题。 – kasperite 2013-03-11 23:39:29

回答

1

我也在Rails 3.2.6中遇到同样的问题,当我升级到Rails 3.2.15时它就消失了。