【问题标题】:My css file is overridden due to activeadmin由于 activeadmin,我的 css 文件被覆盖
【发布时间】:2013-10-10 19:34:35
【问题描述】:

首先我创建了一个 active_admin css 文件为app/assets/stylesheets/active_admin.css.scss

/* active_admin.css.scss */
@import "active_admin/mixins";
@import "active_admin/base";

/* application.css.scss*/
@import "active_admin.css.scss"

所以我的很多 css 都被覆盖了,我按照this post 的指示进行操作,但仍然无法正常工作。 我将文件位置从 app/assets/stylesheets/active_admin.css.scss 更改为 vendor/assets/stylesheets/active_admin.css.scss 但仍然有问题。

那么,我怎样才能只在需要时才加载 activeadmin css 文件呢?

【问题讨论】:

    标签: ruby-on-rails-4 activeadmin


    【解决方案1】:

    基于 seanlinsley 对选定答案的评论和 nathan 的答案, 在我看来,“最干净”的方法确实是将 active_admin.css.scssapp/assets/stylesheets/ 移动到 vendor/assets/stylesheets/

    无需任何其他(配置)修改:“主”应用程序的样式恢复正常,AA 显示也正常。

    (我不想手动包含我的每个资源而不是 require_tree ...!)

    这是 AA 进入的方式:AA (still) opened issue on the matter

    【讨论】:

    • 谢谢。这是 Rails 4.1 的最佳解决方案。
    • 最简单的解决方案总是最好的 :-) 很想知道更多关于它是如何工作的?将更多地研究供应商资产以及它们是如何编译的
    • @Richlewis 我对您的发现很感兴趣:据我所知,供应商资产传统上是由 gems“安装”的,所以我的“解决方案”更像是一种 hack(但在我看来仍然是“最干净的”观点)。如果我弄错了,请随时发表评论...)
    • 仅作记录,此解决方案适用于 Rails 2.2
    • 这在 Rails 6.1.4 上对我有用
    【解决方案2】:

    为了让 active_admin 发挥出色,不要将其包含在 application.css 中,即:删除

    require_tree .
    

    并在 app/assets/stylesheets 中分别要求每个文件 但不要放 active_admin.css

    然后在 config/production.rb 上放这个

    config.assets.precompile += ['active_admin.css']
    

    【讨论】:

    • 这一行将使活动的管理 css 可用于管理部分 --> config.assets.precompile += ['active_admin.css']
    • 您必须在 application.css 中列出/放置所有 CSS 名称,除了 active_admin.css 并删除 --> require_tree
    • 两件事: 1. 不需要将active_admin.css 添加到预编译列表中; AA 已经这样做了。 2. 有一个未解决的票来处理这里描述的问题:github.com/gregbell/active_admin/issues/2514
    【解决方案3】:

    对我有用的(Rails 5)是在我的 app/assets/stylesheets/application.css 的 *= require_self 行之后添加以下行:

    *= stub "active_admin"
    

    【讨论】:

      【解决方案4】:

      从你的 app/assets/stylehseets/application.css.sass 中移除这一行

      *= require_tree ../../../vendor/assets/stylesheets/
      

      将 active_admin.css.scss 移动到 vendor/assets/stylesheets/

      【讨论】:

        【解决方案5】:

        这是解决此问题的链接。我正在重新发布一个我发现非常有用的现有答案,因为它还解决了 js 问题。再次不是我的答案。

        https://github.com/activeadmin/activeadmin/issues/3819#issuecomment-351377822

        arif362 于 2017 年 12 月 13 日发表评论

        我遇到了同样的问题,我在下面解决了这个问题:

        首先你必须在 vendor 目录中创建一个名为 assets 的目录,

        然后在 vendor 文件夹的 assets 目录中,您必须创建两个目录 (i) stylesheets,第二个是 (ii) javascripts。

        之后,您必须将 active_admin.scss 文件从 assets/stylesheets 移动到 vendor/assets/stylesheets,并将 active_admin.js.coffee 文件从 assets/javascripts 移动到 vendor/assets/javascripts

        最后,重新启动您的 Rails 服务器,然后重新加载您的应用程序。希望这对你有用。

        【讨论】:

          【解决方案6】:

          这篇文章已经很老了,所以我认为将我最近的发现包含在 Rails 的更新版本 (6.1.4) 中是值得的。

          active_admin.css.scssapp/assets/stylesheets/ 移动到vendor/assets/stylesheets/ 也对我有用。

          使用 Rails 6.1.4

          【讨论】:

          • 很高兴知道@sandypockets!如果我没记错的话,这是我建议的选项。如果是这样,您能否在我的解决方案的评论中这样说,以便以后的访问者知道这是一个可行的解决方案。谢谢!
          • 不幸的是,我没有足够的声誉来为您的解决方案添加评论。但在留下我自己的评论作为答案之前,我确实赞成它。但是您的解决方案绝对是引导我这样做的原因,所以谢谢!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-02-27
          • 2019-11-22
          • 1970-01-01
          • 2019-08-17
          • 2015-11-17
          • 1970-01-01
          • 2015-10-03
          相关资源
          最近更新 更多