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

twitter-bootstrap-rails: error loading stylesheets

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

rails g bootstrap:install less

获取bootstrap_and_overrides.css.less文件。根据 the documentation,你需要在 application.css 中要求 bootstrap_and 覆盖,我就是这样做的。

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 时,一切加载都没有问题,但没有 bootstrap 样式。任何解决这个问题的帮助将不胜感激。

您是否尝试过禁用 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
 */

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

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