Stimulus
Rails Generate Stimulus (rails g stimulus
) is the generator for Stimulus controllers. Stimulus controllers let you hook Javascript code into your webpages, for things like modals, toggles etc.
You should name your controllers according to the identifier you want to use in your HTML code; A controller named toggle_controller.js
would be referenced with data-controller=toggle
in your HTML.
Here's a more thorough filename-to-controller-name breakdown, pulled from the Stimulus docs —
| controller file name… | its identifier… |
| ----------------------------- | ---------------- |
| clipboard_controller.js | clipboard |
| date_picker_controller.js | date-picker |
| users/list_item_controller.js | users--list-item |
| local-time-controller.js | local-time |
The Stimulus controller generator will create your controller in app/javascripts/controllers
, with the name [name]_controller.js
. You can also generated nested controllers by specifying a controller name like nested/chat
.
rails g stimulus
rails g stimulus
Stimulus Controller Name
Generator Options
Runtime Options
❯ rails g stimulus Usage: rails generate stimulus NAME [options] Options: [--skip-namespace], [--no-skip-namespace] # Skip namespace (affects only isolated engines) [--skip-collision-check], [--no-skip-collision-check] # Skip collision check [--skip-manifest], [--no-skip-manifest] # Don't update the stimulus manifest Runtime options: -f, [--force] # Overwrite files that already exist -p, [--pretend], [--no-pretend] # Run but do not make any changes -q, [--quiet], [--no-quiet] # Suppress status output -s, [--skip], [--no-skip] # Skip files that already exist
Description: ============ Generates a new Stimulus controller at the passed path. If running under node, it'll also call the stimulus:manifest:update task to update the controllers/index.js. Examples: ========= bin/rails generate stimulus chat creates: app/javascript/controllers/chat_controller.js bin/rails generate stimulus nested/chat creates: app/javascript/controllers/nested/chat_controller.js