代码之家  ›  专栏  ›  技术社区  ›  Braham Shakti

如何在application.css中要求main.css.erb

  •  3
  • Braham Shakti  · 技术社区  · 11 年前

    我的 application.css

     *= require_self
     *= require 'main.css'
     *= require 'styles.css'
     *= require 'jquery.ui'
     *= require 'main.css.erb'
     */
    

    但是 main.css.erb 不包括包含

     background-image: url(<%= asset_data_uri 'data.png' %>) !important;
    

    我的主页是

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

    我不想使用 *= require_tree. 在里面 应用程序.css 因此,特定于页面的css将保持彼此独立。

    我如何使用 主.css.erb 在里面 RAILS 4 开发和资产管道 production 谢谢

    4 回复  |  直到 11 年前
        1
  •  3
  •   Richard Peck    11 年前

    我不想使用*=require_tree。在application.css中,使该页 特定的css将保持彼此独立。

    既然如此,为什么不在 layout 直接:

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

    这将允许您单独包含CSS文件,无论是在开发阶段还是在开发阶段;生产

    当然,这一建议对命名&您遇到的文件扩展名问题:


    Precompile

    在生产环境中,Sprockets使用指纹识别方案 如上所述。默认情况下,Rails假定资产已预编译 并且将由web服务器作为静态资产。

    你提到你想让你的文件与其他CSS分开。 require_tree require --它调用一个文件 包括 在您的 application.css 文件

    这没有什么错,除非你想单独包含这些文件,你需要确保 保持 它们分开。为此,您应该分配 main 到预编译数组:

    #config/application.rb
    config.assets.precompile += ["main.css"]
    

    这意味着当您在生产环境中运行应用程序时,您将能够使用 main.css 文件独立于任何其他文件。

    --

    名称

    最后,可能也是最令人痛心的是,您需要确保只调用一个文件 主要的 。原因是无论您是否使用 css , erb scss ,文件将始终转换为 css格式 文件

    这意味着如果您有多个同名文件,Rails将变得混乱(正如您所发现的)。要解决此问题,您必须确保能够单独命名所需的文件

    --

    Preprocessor

    最后,如 Sampriti Panda ,您应该选择使用 SCS系统 预处理器结束 欧洲银行 在您的资产管道中。其主要原因是预处理器允许您不受惩罚地预编译资产

    我会改变你的 欧洲银行 文件到此:

    #app/assets/stylesheets/main.css.scss
    .your_element {
        background-image: asset_url('data.png');
    }
    

    这将作为动态和静态文件工作

        2
  •  3
  •   Sankalp Singha    11 年前

    这是因为您包含了2个main.css。

    尝试将代码更改为:

    *= require_self
     *= require main
     *= require styles
     *= require jquery.ui
    
        3
  •  2
  •   Vapire    11 年前

    你有没有 main.css 和一个 main.css.erb 文件如果是,那么这两个文件对于链轮是相同的,因此只有第一个文件( 主.css )包括在内。

    重命名其中一个文件并删除清单文件中的文件扩展名,即:

    *= require_self
    *= require main
    *= require styles
    *= require jquery.ui
    *= require main2
    
        4
  •  1
  •   Community Mohan Dere    8 年前

    从…起 https://stackoverflow.com/a/10075329/1466095

    From rails 3.1资产管道允许您在内部使用资产助手 您的css文件。css解析器未绑定控制器/操作 但是ruby解析器现在能够解决一些问题,例如 图像路径参考

    因此您可以将其重命名为 main.css.scss 内部 app/assets/stylesheets 目录,它应该可以工作。