Tutorials  /  JavaScript

Ruby on Rails: Integration Options for Stimulus

Ccentron Redaktion · November 2024 ·6 min read ·JavaScript, Tutorial

Discover in our tutorial how to easily enhance the interactivity of your Ruby on Rails application with Stimulus. From setup to integration – we guide you step-by-step through the process. Leverage the power of Stimulus to optimize user experience and reduce load times.

In developing Ruby on Rails projects, you may encounter the need for interactivity in generated HTML files. There are various ways to implement this interactivity. One option is to use a JavaScript framework like React or Ember, which work well for Single Page Applications (SPAs), especially when managing client-side state or addressing performance issues related to frequent server requests.

However, implementing a framework to manage state and frequent updates on the client-side requires consideration of several factors:

  1. Performance can be limited by loading and conversion requirements, such as parsing JavaScript and retrieving and converting JSON to HTML.
  2. Committing to a framework can lead to writing more code than necessary for a specific use case, especially when only minor JavaScript enhancements are needed.
  3. Managing state on both client and server sides can lead to task duplication and increased error potential.

As an alternative, the team at Basecamp, who also developed Rails, created Stimulus.js. Described as “a modest JavaScript framework for the HTML you already have,” Stimulus is designed to enhance a modern Rails application by working with server-rendered HTML. State is stored in the Document Object Model (DOM), and the framework provides standard methods for interacting with elements and events in the DOM. It works alongside Turbolinks (included in Rails 5+ by default) to improve performance and load times with code focused on a specific purpose.

Step-by-Step Guide to Integrating Stimulus

Step 1: Creating a Nested Model

The first step is to create a nested Post model that links to our existing Shark model. This involves establishing Active Record relationships between our models: Posts belong to specific Sharks, and each Shark can have multiple Posts.

# app/models/post.rb

class Post < ApplicationRecord

belongs_to :shark

end

# app/models/shark.rb

class Shark < ApplicationRecord

has_many :posts, dependent: :destroy

validates :name, presence: true, uniqueness: true

validates :facts, presence: true

end

Step 2: Creating a Controller for a Nested Resource

Creating a Posts controller involves defining a nested resource route in the application’s main route file and creating the controller file itself to specify the methods associated with particular actions.

# app/controllers/posts_controller.rb

class PostsController < ApplicationController

before_action :get_shark

def create

@post = @shark.posts.create(post_params)

end

def destroy

@post = @shark.posts.find(params[:id])

@post.destroy

end

private

def get_shark

@shark = Shark.find(params[:shark_id])

end

def post_params

params.require(:post).permit(:body, :shark_id)

end

end

Step 3: Reorganizing Views with Partials

In this step, we’ll organize the views and partials that will serve as a foundation for working with Stimulus.

<%= render 'sharks/posts' %>

<%= render 'sharks/all' %>

Step 4: Installing Stimulus - Ruby on Rails

The first task when using Stimulus is to install and configure it in your application. This involves ensuring that we have the correct dependencies, including the Yarn package manager and Webpacker, the gem that lets us work with the JavaScript preprocessor and bundler webpack. With these dependencies, we can install Stimulus and use JavaScript to manipulate events and elements in the DOM.

# Installing Yarn

sudo apt update

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add –

echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

sudo apt update

sudo apt install yarn

# Installing webpacker and Stimulus

nano Gemfile # add 'webpacker', '~> 4.x' to dependencies

bundle install

bundle exec rails webpacker:install

bundle exec rails webpacker:install:stimulus

Part 5: Core Concepts of Stimulus

Before diving into using Stimulus in Rails partials, it’s important to understand the core concepts of Stimulus:

  • Controllers: JavaScript classes defined in JavaScript modules that allow access to specific HTML elements and the Stimulus application instance.
  • Targets: Allow referencing specific HTML elements and are associated with specific controllers.
  • Actions: Control how DOM events are handled by controllers and are also associated with specific controllers. They create a link between the HTML element associated with the controller, the methods defined in the controller, and a DOM event listener.
Part 6: Using Stimulus in Rails Partials

In our Ruby on Rails partials, we use Stimulus to improve the user experience and control interaction with specific HTML elements. An example of this is adding a new post to a page without needing to reload the page.

To achieve this, we follow a simple process:

      1. First, create the partials file with the desired HTML code and integrate the necessary Stimulus controllers, actions, and targets.
      2. Then, define the corresponding Stimulus controller with the desired methods.
      3. Finally, test the functionality to ensure everything works as expected.
VM

Matching infrastructure at centron

Node applications need somewhere to run: ccloud³ VMs with full root access from €3.12 per month – or as a managed server if you would rather not run it yourself. Rent a cloud server →

Conclusion and Outlook - Ruby on Rails

In this post, we explored using Stimulus in Rails partials and saw how it can improve the user experience. Stimulus provides a lightweight alternative to more extensive JavaScript frameworks and is particularly suitable for projects that don’t require complex client-side state management.

For future developments and experiments with Stimulus, there are numerous possibilities. We hope this post serves as a useful introduction to using Stimulus in Rails applications and encourages you to continue experimenting and building your own projects. Enhancing Interactivity: Integration Options for Stimulus in Ruby on Rails

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie JavaScript
Teilen
Noch offene Fragen?

Unser Team hilft Ihnen bei Ihrem konkreten Setup weiter – von Menschen, die die Plattform selbst betreiben.

War dieses Tutorial hilfreich?

Ihre Antwort wird anonym gespeichert und hilft uns, die Tutorials zu verbessern.

Kommentare

Noch keine Kommentare – stellen Sie die erste Frage zu diesem Tutorial.

Zum Kommentieren anmelden

Kommentare stehen centron-Kunden offen. Melden Sie sich in Ihrem Konto an, um eine Frage zu diesem Tutorial zu stellen.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren