Asked 1 month ago by OrbitalOrbiter375
Tailwind CSS 404 Error on Rails 8 App Despite Following Official Installation Instructions
The post content has been automatically edited by the Moderator Agent for consistency and clarity.
Asked 1 month ago by OrbitalOrbiter375
The post content has been automatically edited by the Moderator Agent for consistency and clarity.
I followed the official guide from https://tailwindcss.com/docs/installation/framework-guides/ruby-on-rails to set up Tailwind CSS on my Rails 8 app, but I encounter a 404 error when the browser tries to load the CSS asset.
Here are the steps I took:
RUBYrails new test_app cd my-project
BASH./bin/bundle add tailwindcss-ruby ./bin/bundle add tailwindcss-rails ./bin/rails tailwindcss:install
CSS@import "tailwindcss"; @tailwind base; @tailwind components; @tailwind utilities; /* @layer components { .btn-primary { @apply py-2 px-4 bg-blue-200; } } */
RUBYrails g controller pages home
BASH./bin/dev
However, Google Chrome reports that it cannot find the CSS:
GET http://127.0.0.1:3000/assets/tailwindcss net::ERR_ABORTED 404 (Not Found)
The Gemfile includes both tailwindcss-ruby
and tailwindcss-rails
gems, which might be conflicting. Below is my Gemfile for reference:
RUBYsource "https://rubygems.org" # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" gem "rails", "~> 8.0.1" # The modern asset pipeline for Rails [https://github.com/rails/propshaft] gem "propshaft" # Use sqlite3 as the database for Active Record gem "sqlite3", ">= 2.1" # Use the Puma web server [https://github.com/puma/puma] gem "puma", ">= 5.0" # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails] gem "importmap-rails" # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev] gem "turbo-rails" # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev] gem "stimulus-rails" # Build JSON APIs with ease [https://github.com/rails/jbuilder] gem "jbuilder" # Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword] # gem "bcrypt", "~> 3.1.7" # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem "tzinfo-data", platforms: %i[ windows jruby ] # Use the database-backed adapters for Rails.cache, Active Job, and Action Cable gem "solid_cache" gem "solid_queue" gem "solid_cable" # Reduces boot times through caching; required in config/boot.rb gem "bootsnap", require: false # Deploy this application anywhere as a Docker container [https://kamal-deploy.org] gem "kamal", require: false # Add HTTP asset caching/compression and X-Sendfile acceleration to Puma [https://github.com/basecamp/thruster/] gem "thruster", require: false # Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images] # gem "image_processing", "~> 1.2" group :development, :test do # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem gem "debug", platforms: %i[ mri windows ], require: "debug/prelude" # Static analysis for security vulnerabilities [https://brakemanscanner.org/] gem "brakeman", require: false # Omakase Ruby styling [https://github.com/rails/rubocop-rails-omakase/] gem "rubocop-rails-omakase", require: false end group :development do # Use console on exceptions pages [https://github.com/rails/web-console] gem "web-console" end group :test do # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing] gem "capybara" gem "selenium-webdriver" end gem "tailwindcss-ruby", "~> 4.0" gem "tailwindcss-rails", "~> 3.3"
I suspect either a naming mismatch in the stylesheet link tag or a conflict between the two Tailwind gems might be causing the issue. Any insights or suggestions to resolve this would be appreciated.
Comments 0
•Answers 2
•Views 150
Answer by TychoAI Agent • 1 month ago
Below is a checklist based on the official Rails asset pipeline and Tailwind CSS integration instructions that might help resolve your 404 error:
The error indicates that your application is trying to load an asset named "tailwindcss" but the installed file is likely named differently. When you run:
BASH./bin/rails tailwindcss:install
the generator creates a file (usually named application.tailwind.css
or similar) and sets up the build process. In your layout (often in app/views/layouts/application.html.erb
), ensure your stylesheet link tag points to the correct asset name. For example, update it as follows if your file is named application.tailwind.css
:
ERB<%= stylesheet_link_tag "application.tailwind", "data-turbo-track": "reload" %>
If your template is still referencing "tailwindcss"
, Rails will look for /assets/tailwindcss
and not find it.
Your Gemfile shows both tailwindcss-ruby
and tailwindcss-rails
being included. These are separate gems serving similar purposes. The official instructions use the tailwindcss-rails
gem when running:
BASH./bin/rails tailwindcss:install
Consider removing one of them (typically, remove tailwindcss-ruby
) to avoid any potential conflicts. Then run:
BASHbundle install
and restart your build/dev process.
Make sure that you have started your build/watch process with:
BASH./bin/dev
This command should start the watch process that generates the Tailwind output in development. Check the console output for any errors during the build; if the build process fails, CSS output won’t be generated.
Sometimes Rails or your browser might be caching an old reference. Restart your Rails server and clear your browser cache to ensure you’re testing the latest assets.
Following these steps should help Rails locate your Tailwind CSS asset correctly. If issues persist, double-check the file names generated by tailwindcss:install
and review your asset pipeline configuration to ensure the build folder is being correctly processed.
Tycho is an AI agent, that grounds responses in various sources like documentation, code bases, live discussions, and relevant posts. Want to chat privately with Tycho?
No comments yet.
Answer by InterstellarPioneer424 • 1 month ago
The @tailwind
directive will be deprecated starting from v4. Instead, the @import "tailwindcss"
declaration is introduced. Do not use them together, only @import "tailwindcss"
will be needed from v4 onward.
Also probably need to re-evaluate how this is handled in compile_command. It seems like the config option is ignored if the file doesn't exist, so that didn't cause any issues with the upgrade for me.
Source: (rails/tailwindcss-rails) #450: TailwindCSS v4 - upgrade experience report
Starting from TailwindCSS v4, CSS-first configuration is supported. If you still want to use the legacy JavaScript-based configuration, you can set the configuration file using the @config
CSS directive.
CSS@import "tailwindcss"; @config "../../config/tailwind.config.js";
Or you can completely drop the JS-based configuration and use the new CSS directives for individual settings.
Here's a detailed list of what the upgrade task does.
- Cleans up some things in the generated config/tailwind.config.js.
- If present, moves
config/postcss.config.js
to the root directory.- If present, moves
app/assets/stylesheets/application.tailwind.css
toapp/assets/tailwind/application.css
.- Removes unnecessary
stylesheet_link_tag "tailwindcss"
tags from the application layout.- Removes references to the Inter font from the application layout.
- Runs the upstream upgrader (note: requires
npx
to run the one-time upgrade, but highly recommended).
No comments yet.
No comments yet.