Wie man GrapesJS in eine Ruby on Rails App integriert (vollständiger Leitfaden 2026)

GrapesJS in eine Rails-App einbetten: Rendern Sie es in einer ERB-Ansicht, speichern Sie Inhalte mit dem Rails CSRF-Token auf einem Controller und exportieren Sie sauberes HTML/CSS.

DevFuture Development
DevFuture Development
May 25, 2026a month ago
8 Min-Lesezeit71-Ansichten

Warum GrapesJS zu Rails passt

GrapesJS ist ein browserfreier, vom MIT lizenzierter Editor, daher bedient Rails die Editor-Seite und stellt Lade-/Speicher-Endpunkte frei, während GrapesJS die Benutzeroberfläche übernimmt. Dieser Leitfaden baut ein funktionierendes Setup: eine ERB-Ansicht, die den Editor hostet, ein Controller, der erhalten bleibt Inhalte mit CSRF-Schutz und HTML/CSS-Export.

1. Den Editor in einer Ansicht darstellen

Dein Rails-Layout beinhaltet csrf_meta_tagsbereits . Erstellen Sie app/views/editor/show.html.erb:

<div id="gjs"><h1>Edit me in GrapesJS</h1></div>
<link href="https://unpkg.com/grapesjs/dist/css/grapes.min.css" rel="stylesheet">
<script src="https://unpkg.com/grapesjs"></script>
<%= javascript_include_tag "editor" %>

2. Initialisieren Sie GrapesJS mit Fernspeicher

// app/javascript/editor.js
const csrf = document
  .querySelector('meta[name="csrf-token"]')
  .getAttribute('content');

const editor = grapesjs.init({
  container: '#gjs',
  height: '100vh',
  fromElement: true,
  storageManager: {
    type: 'remote',
    stepsBeforeSave: 3,
    options: {
      remote: {
        urlStore: '/editor/save',
        urlLoad: '/editor/load',
        headers: { 'X-CSRF-Token': csrf },
      },
    },
  },
});

3. Routen und Controller

# config/routes.rb
get  "editor",      to: "editor#show"
get  "editor/load", to: "editor#load"
post "editor/save", to: "editor#save"
# app/controllers/editor_controller.rb
class EditorController < ApplicationController
  def show; end

  def load
    page = Page.find_or_create_by(key: "home")
    render json: (page.project || {})
  end

  def save
    page = Page.find_or_create_by(key: "home")
    page.update!(
      project: params.permit!.to_h,
      html: params["gjs-html"],
      css: params["gjs-css"]
    )
    render json: { status: "ok" }
  end
end

Der X-CSRF-Token Header erfüllt die Standardfälschung von Rails Schutz, also lässt du CSRF an. Speichern project als jsonb Spalte.

4. Rendern Sie die exportierte Seite

<style><%= raw @page.css %></style>
<%= raw @page.html %>

Nur für vertrauenswürdige Editoren verwenden raw ; sonst desinfizieren.

Produktionstipps

Laptop with a code editor open on a desk
Speichere das Projekt als JSONB und serviere zwischengespeichertes HTML.

Für ein solides Rails-Setup speichere das GrapesJS-Projekt in einer jsonb Spalte, damit Abfragen und Teilupdates günstig bleiben, und behalte die gerenderten html/css in eigenen Spalten für schnelle Auslieferungen. Wenn du GrapesJS über Importmap-Rails statt über ein CDN lädst, pinne es mit bin/importmap pin grapesjs und bestätige, dass es in der Produktion dort aufgelöst wird, wo der Asset-Host abweicht. Lass den Fälschungsschutz von Rails eingeschaltet – der X-CSRF-Token Header csrf_meta_tags erfüllt ihn. Und die veröffentlichte Seite (Fragment-Cache oder CDN) zwischenspeichern, wodurch sie beim Speicherstand ungültig werden, sodass die Renderkosten des Editors nie die Endnutzer erreichen.

Voraussetzungen

Du brauchst Ruby 3.x und eine Rails 7-Anwendung. GrapesJS kann von einem CDN geladen werden in einer ERB-Ansicht oder mit Importmap-Rails gepinnt – kein Rails-spezifischer Edelstein wird benötigt. Der Editor läuft im Browser und postet an deine Controller, also ist du damit vertraut Ansichten, Routen, Controller und der Fälschungsschutz von Rails reichen aus.

Fügen Sie benutzerdefinierte Blöcke zum Editor hinzu

Registrieren Sie ziehbare Blöcke mit dem Blockmanager nach grapesjs.init:

editor.BlockManager.add('hero', {
  label: 'Hero section',
  category: 'Sections',
  content: '<section class="hero"><h1>Headline</h1><p>Copy</p></section>',
});

Ziehe fertige Blockbibliotheken und Presets aus GJS.Market für ein reichhaltigeres Set.

Storage Deep-Dive: ein maßgeschneiderter Adapter

Ein benutzerdefinierter Speicheradapter liest das CSRF-Token vom Meta-Tag und postet auf deine Routen:

const csrf = document.querySelector('meta[name="csrf-token"]').content;
editor.Storage.add('rails-store', {
  async load() {
    const res = await fetch('/editor/load');
    return res.ok ? res.json() : {};
  },
  async store(data) {
    await fetch('/editor/save', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json', 'X-CSRF-Token': csrf },
      body: JSON.stringify(data),
    });
  },
});
// then: storageManager: { type: 'rails-store' }

Speichere das Projekt in einer jsonb Spalte, damit es exakt wieder in den Editor geladen wird.

Aufführungstipps

Lade GrapesJS nur auf dem Editor-Bildschirm und verschiebe das Skript. Cache die veröffentlichten Seite mit Rails-Fragment-Caching oder einem CDN und beim Speicherstand ungültig machen. Wenn du lädst GrapesJS über Importmap-Rails, bestätigen Sie, dass der Pin in der Produktion aufgelöst wird, wo der Asset Host unterscheidet sich.

Sicherheitsaspekte

Fälschungsschutz anbringen – der X-CSRF-Token Header von csrf_meta_tags erfüllt es. Füge ein before_action That hinzu autorisiert den aktuellen Benutzer vor dem Speichern. Nur verwenden raw/html_safe bei gespeichertem Markup, wenn Editoren vertrauenswürdig sind; Ansonsten desinfizieren Sie die Ausgabe. Validieren Die Nutzlastgröße.

Fehlerbehebung häufiger Fehler

422 Unprozessable Entity bedeutet in der Regel, dass das CSRF-Token fehlt oder abgestanden. Eine ungestaltete Leinwand bedeutet, dass das Stylesheet nicht geladen wurde. Ein leerer Editor bedeutet, dass der Container-Selektor mit nichts übereinstimmt hat. 413 bedeutet, dass die Projektnutzlast die Körpergrenze überschreitet.

Wann sollte man GrapesJS mit Rails verwenden

GrapesJS passt, wenn Ihre Rails-App einen eingebetteten visuellen Editor für Ihre Nutzer benötigt Control – Landingpages, E-Mails, ein White-Label-Builder – unterstützt von deinem eigenen Datenbank. Für Inline-Rich Text reicht ein leichteres WYSIWYG aus; für ganzseitige Komposition mit Layout, Styling und HTML/CSS-Export, GrapesJS ist der stärkere, MIT-lizenzierte, selbstgehostete Wahl.

Nächste Schritte

Siehe die zugehörigen GrapesJS + Laravel und GrapesJS + Django Guides, Durchstöbern Sie den GrapesJS-Marktplatz oder starten Sie auf dem GJS.Market-Startseite.

FAQ

Wie speichere ich GrapesJS-Inhalte im Rails-Backend?

Konfigurieren Sie den Storage Manager mit type: 'remote' und zeigen Sie auf Rails-Routen. Senden Sie den csrf-token Metawert als X-CSRF-Token Header, dann das Projekt-JSON auf einem Modell speichern.

Wie lade ich GrapesJS ohne einen schweren Build-Schritt?

Fügen Sie es aus einem CDN in eine ERB-Ansicht ein oder pinnen Sie es mit Importmap-Rails – beides funktioniert weil GrapesJS einfaches Browser-JavaScript ist.

Wo sollte ich das Projekt aufbewahren?

Verwenden Sie eine Spalte jsonb für das vollständige Projekt sowie optionale Textspalten Für das gerenderte HTML und CSS.

Weitere Tags:
Veröffentlicht May 25, 2026
Jul 3, 2026 aktualisiert
🔌 GJS.Market

Suchen Sie nach GrapesJS-Plugins?

Über 100 kuratierte Plugins, Presets und Vorlagen – sorgfältig auf Qualität ausgewählt und von der Community gepflegt.

Teilen Sie diesen BeitragTwitterFacebookLinkedIn
Veröffentlicht über
DevFuture Development
DevFuture Development
Besuchen Sie Shop →

Mehr von DevFuture Development

Entdecken Sie weitere aufschlussreiche Beiträge und bleiben Sie mit den neuesten Inhalten auf dem Laufenden.

Alle Beiträge ansehen

Premium-Plugins von DevFuture Development

Handverlesente, bezahlte Ergänzungen dieses Schöpfers erstellt.

Besuchen Sie Shop →