twitter-bootstrap-rails:加载样式表时出错

时间:2015-04-16 11:34:01

标签: ruby-on-rails twitter-bootstrap twitter-bootstrap-rails

我第一次尝试使用Twitter-bootstrap-rails gem并且遇到了一些问题。我删除了rails生成的所有样式表,除了application.css和我运行

rails g bootstrap:install less

获取bootstrap_and_overrides.css.less文件。根据{{​​3}},你需要在application.css中要求bootstrap_和覆盖。

Application.css看起来像这样:

 *
 *= require_tree .
 *= require bootstrap_and_overrides.css.less
 *= require_self
 */

和bootstrap_and_overrides.css.less看起来像这样:

@import "twitter/bootstrap/bootstrap";
@import "twitter/bootstrap/responsive";

// bootstrap variables and mixins
@import "twitter/bootstrap/variables.less";
@import "twitter/bootstrap/mixins.less";

// other auto generated code below

问题在于,当我尝试运行应用时出现此错误:

NoMethodError in StaticPages#home
Showing /home/sheeka/Documents/workspace/my_projects/ruby/testapps/media_store/app/views/layouts/application.html.erb where line #5 raised:

undefined method `[]' for nil:NilClass

和第5行指向

<%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>

当我删除application.css时,所有内容都没有问题,但是没有引导样式。任何帮助解决这个问题将非常感激。

1 个答案:

答案 0 :(得分:0)

您是否尝试过禁用turbo-links?根据我的理解,turbo-links已经知道javascript库的兼容性问题,比如foundation-rails gem和twitter-bootstrap gem。

http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4

无论是否能解决问题,我都会这样做,只是为了避免任何不必要的麻烦。 (除非你绝对需要turbolinks)。

最后,我希望你的application.css文件如下所示:

 *
 *= require_tree .
 *= require_self
 *= require bootstrap_and_overrides.css.less
 */

我相信在引导和覆盖之前应该需要树和self。当我没有要求它在资产管道中以正确的顺序加载时,我得到了与基础相同的错误。使用资产管道,基本上我们的想法是,您始终希望当前控制器特定的样式表能够覆盖应用程序中的任何其他样式表。 我希望这最终会有所帮助。当我收到此错误时,这对我有用。

http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives