【问题标题】:Rails 3.2 and Sass not rendering Application.cssRails 3.2 和 Sass 不呈现 Application.css
【发布时间】:2012-05-07 00:37:43
【问题描述】:

我刚刚对 Rails 3.2 和最新的 Sass 和 Coffee Rails Gems 进行了重大升级,但我的应用程序文件不会呈现为 Application.css.scss。我在我的 html 中有它:

  <%= stylesheet_link_tag 'application.css.scss' %>

当我在开发模式下查看页面源时,我得到了

  <link href="/assets/application.css.scss.css" media="screen" rel="stylesheet" type="text/css" />

这到底是怎么回事!?

它似乎将 .css 附加到我放在 stylesheet_link_tag 中的所有内容上,所以如果我在页面源中将其保留为“应用程序”,我就有 application.css 等。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2


    【解决方案1】:

    标签的适当格式是:

    <%= stylesheet_link_tag 'application' %>
    

    Rails 自动将.scss 文件编译成.css 文件——然后它会自动导入正确的文件。这一切都由你来照顾。

    【讨论】:

      【解决方案2】:

      如果您不向stylesheet_link_tag 附加扩展名,.css 将被自动附加。但是,我不知道为什么在您指定 .scss 时它会附加扩展名。

      我也不确定你为什么不只使用&lt;%= stylesheet_link_tag 'application' %&gt;,这应该是所有必要的。

      有关更多信息,请参阅 stylesheet_link_tag here 的文档。

      【讨论】:

      • 是的,我也不确定它为什么会这样做。我尝试了“应用程序”,就像我在问题中所说的那样,它变成了 application.css :(
      • 这就是我的意思。为什么这不起作用?资产管道应该负责从您的 scss 文件生成 application.css
      【解决方案3】:

      我认为在 Rails 3.2 中使用 Sprockets 执行此操作的“默认”方式是使用名为 application.css(而不是 application.css.scss)的文件,其中包含您的 Sprockets 清单代码。应该是这个样子...

      application.css(应用程序/资产/样式表)

      /*
       * This is a manifest file that'll automatically include all the stylesheets available in this directory
       * and any sub-directories. 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 main_scss_file
      */
      

      至少应该有两行,第一行应该是 require_self,它在自身内部添加内容,以及 require some_other_file,它是对您的主 scss 文件的引用。rake assets:precompile 的默认行为是编译您的 application.js和应用 css

      由 Rail 生成器生成的 production.rb 编码指定 application.css 是默认编译的。 (配置/环境)

        # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
        # config.assets.precompile += %w( search.js )
        config.assets.precompile += %w( home.js )
      

      application.erb

      <%= stylesheet_link_tag 'application' %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 1970-01-01
        相关资源
        最近更新 更多