我的CSS文件被ActiveAdmin覆盖了。

28

首先,我已经创建了一个 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样式都被覆盖了,我按照这篇文章的说明进行了操作,但还是没有效果。我将文件位置从app/assets/stylesheets/active_admin.css.scss更改为vendor/assets/stylesheets/active_admin.css.scss,但问题仍然存在。

那么,我该如何在需要时加载activeadmin css文件呢?

6个回答

80

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

不需要进行任何其他(配置)修改:‘main’应用程序的样式回到正常状态,AA显示也正常。

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

这就是AA进入的方式:关于此问题的AA(仍然)开放问题


7
谢谢。这是适用于Rails 4.1的最佳解决方案。 - Dan Kohn
1
最简单的解决方案总是最好的 :-) 我很好奇更多关于它是如何工作的?我会更深入研究供应商资产以及它们是如何编译的。 - Richlewis
1
@Richlewis 我对你的发现很感兴趣:据我所知,供应商资产通常是通过gems“安装”的,因此我的“解决方案”更像是一种hack(但在我看来仍然是最“清洁”的)。如果我错了,请随时评论...) - gfd
仅供记录,这个解决方案不适用于Rails 2.2 - CelsoDeSa
1
这对我在Rails 6.1.4上有效。 - sandypockets
1
是的,对我也起作用了。Rails 7 - Piyush Chaudhary

23
不要在应用程序的css文件中包含active_admin,以保持良好的兼容性,即移除以下代码:
require_tree .

需要在app/assets/stylesheets中单独引入每个文件,但不要引入active_admin.css。

同时,在config/production.rb中添加以下内容。

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

这行代码将使得活动管理的CSS在管理员部分可用 --> config.assets.precompile += ['active_admin.css'] - jimagic
除了 active_admin.css,您必须在 application.css 中列出/放置所有 CSS 名称,并删除 --> require_tree。 - jimagic
3
两件事情:
  1. 将active_admin.css添加到预编译列表中并不是必需的,因为AA已经处理了这个问题。
  2. 关于此处描述的问题,有一个未解决的工单:https://github.com/gregbell/active_admin/issues/2514
- seanlinsley

14

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

*= stub "active_admin"

3
从你的app/assets/stylehseets/application.css.sass中删除此行。
*= require_tree ../../../vendor/assets/stylesheets/

将active_admin.css.scss移动到vendor/assets/stylesheets/目录下。


2
这是解决此问题的链接。我重新发布了一个现有的答案,因为它也涉及到了JS问题。再次声明,这不是我的答案。

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

arif362在2017年12月13日发表了评论。
我遇到了同样的问题,我已经解决了以下问题:
首先,您必须在供应商目录中创建一个名为assets的目录,
然后,在供应商文件夹的资产目录中,您必须创建两个目录(i)样式表和第二个是(ii)javascripts。
之后,您必须将active_admin.scss文件从assets/stylesheets移动到vendor/assets/stylesheets,将active_admin.js.coffee文件从assets/javascripts移动到vendor/assets/javascripts,
最后,重新启动Rails服务器,然后重新加载应用程序。希望这对您有帮助。

1
这篇文章相当古老,因此我认为包括我最近使用更新版本的Rails(6.1.4)进行的发现是值得的。
active_admin.css.scssapp/assets/stylesheets/移动到vendor/assets/stylesheets/对我也起作用了。
使用Rails 6.1.4

1
很高兴知道@sandypockets!如果我没记错的话,这是我建议的选项。如果是的话,您能否在我的解决方案中发表评论,以便后来的访问者知道它是可行的解决方案。谢谢! - gfd
很不幸,我没有足够的声望来添加评论到你的解决方案。但在留下自己的答案评论之前,我已经点赞了你的解决方案。但是你的解决方案绝对是引导我这样做的,所以谢谢你! - sandypockets

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接