Rails Admin 3.x doesn't work out of the box with Rails 8's Propshaft asset pipeline. The issue is that rails_admin's assets are SCSS files that need compilation, but Propshaft only serves static files—it doesn't compile SCSS like Sprockets did.
When you visit /admin, you'll see:
ActionView::Template::Error (The asset 'rails_admin.css' was not found in the load path.)
Caused by: Propshaft::MissingAssetError (The asset 'rails_admin.css' was not found in the load path.)
Copy pre-compiled CSS from a working rails_admin instance into your app. The rails_admin-nobuild repo has done this work already.
curl -o vendor/assets/stylesheets/rails_admin.css \
https://raw.githubusercontent.com/3v0k4/rails_admin-nobuild/main/app/assets/stylesheets/rails_admin.cssImportant: Put this in vendor/assets/stylesheets/, NOT app/assets/stylesheets/. If you put it in app/assets/stylesheets/, the Bootstrap styles will leak into your main site and break your styling.
The CSS references Font Awesome fonts at /rails_admin/. Copy them from the gem to your public directory:
mkdir -p public/rails_admin
# Find your gem path
GEM_PATH=$(bundle show rails_admin)
cp $GEM_PATH/vendor/assets/fonts/rails_admin/fa-solid-900.ttf public/rails_admin/
cp $GEM_PATH/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 public/rails_admin/Add the vendor stylesheets directory to Propshaft's load path:
# config/initializers/assets.rb
Rails.application.config.assets.version = "1.0"
# Rails admin CSS is in vendor/assets/stylesheets/rails_admin.css
# Rails admin fonts are in public/rails_admin/ (served directly)
Rails.application.config.assets.paths << Rails.root.join("vendor/assets/stylesheets")In your rails_admin initializer, make sure you're using importmap for the JavaScript:
# config/initializers/rails_admin.rb
RailsAdmin.config do |config|
config.asset_source = :importmap
# ... rest of your config
endbin/rails server
# Visit http://localhost:3000/admin- CSS: Propshaft finds
rails_admin.cssinvendor/assets/stylesheets/and serves it at/assets/rails_admin.css - Fonts: The CSS references fonts at
/rails_admin/*.woff2which are served directly frompublic/rails_admin/ - JavaScript: The
importmapasset source tells rails_admin to use its built-in importmap configuration for JS modules - Isolation: Keeping the CSS in
vendor/instead ofapp/assets/stylesheets/prevents Bootstrap styles from leaking into your main app
After setup, you should have:
your-app/
├── config/
│ └── initializers/
│ ├── assets.rb # Updated with vendor path
│ └── rails_admin.rb # asset_source = :importmap
├── public/
│ └── rails_admin/
│ ├── fa-solid-900.ttf
│ └── fa-solid-900.woff2
└── vendor/
└── assets/
└── stylesheets/
└── rails_admin.css # ~25k lines of compiled CSS
Make sure rails_admin.css is in vendor/assets/stylesheets/, not app/assets/stylesheets/.
Check that the font files are in public/rails_admin/ and accessible at /rails_admin/fa-solid-900.woff2.
Ensure config.asset_source = :importmap is set in your rails_admin initializer.
- Solution based on rails_admin-nobuild by Riccardo Odone
- The compiled CSS contains Bootstrap 5.1.3 + rails_admin custom styles