Inbäddad Ruby (ERB) 101: En nybörjarguide till dynamisk templating i Ruby

17 mars 2025

Har du någonsin undrat hur Ruby-utvecklare sömlöst blandar in dynamisk logik i sina HTML-mallar? Gå in Inbäddad Ruby (ERB)ERB är en kraftfull templating-motor som gör det möjligt att bädda in Ruby-kod direkt i HTML, vilket gör det möjligt att skapa dynamiska och datadrivna webbsidor. Oavsett om du bygger en enkel blogg eller en komplex webbapplikation är ERB ett verktyg du måste känna till för att Ruby utvecklare.

I den här guiden går vi igenom grunderna i ERB, från dess syntax och installation till praktiska exempel och bästa praxis. I slutet kommer du att ha en solid förståelse för hur du använder ERB för att skapa dynamiska och underhållbara mallar i dina Ruby-projekt. Låt oss dyka in!

Vad är inbäddad Ruby (ERB)?

Embedded Ruby, eller ERB, är ett templating-system som gör att du kan skriva Ruby-kod direkt i HTML-filer. Denna kombination gör det möjligt att generera dynamiskt innehåll, till exempel att visa användarspecifika data eller iterera över en lista med objekt. ERB-filer har vanligtvis filnamnstillägget .erb och bearbetas av Ruby-tolken för att producera den slutliga HTML-utmatningen.

ERB används ofta i Ruby on Rails, där det fungerar som standardmallmotor för rendering av vyer. Det är dock inte begränsat till Rails - ERB kan användas i alla Ruby-projekt för att skapa dynamiska mallar.

Hur fungerar ERB?

ERB använder speciella avgränsare för att skilja Ruby-kod från HTML. Här är en snabb uppdelning av den viktigaste syntaxen:

: Exekverar Ruby-kod utan att skriva ut något.

Exempel: erb

<% if user_signed_in? %>
<p>Välkommen tillbaka!</p>
<% end %>

: Exekverar Ruby-kod och bäddar in resultatet i mallen.
Exempel: erb

<h1>Hallå? <%= @user.name %>!</h1>

: Lägger till kommentarer som ignoreras under renderingen.
Exempel: erb

<%# This is a comment and won't appear in the output %>

Dessa avgränsare gör att du kan blanda Ruby-logik med HTML, vilket gör dina mallar dynamiska och flexibla.

Konfigurera ERB i ett Ruby-projekt

Att använda ERB i ett fristående Ruby-skript är enkelt. Här är hur du kan komma igång:

Kräver erb-biblioteket:
rubin

kräver "erb

Skapa en ERB-mall:
erb


<h1>Välkommen till oss, <%= @name %>!</h1>

Bind data till mallen och rendera den:
rubin

@namn = "Alice"
mall = ERB.new(File.read('mall.erb'))
output = mall.resultat(bindning)
sätter utmatning

I Ruby on Rails är ERB integrerat som standard, så du kan börja använda det direkt i dina vyer.

Viktiga egenskaper hos ERB

ERB har flera funktioner som gör den till en kraftfull templating-motor:

  • Partialer: Återanvändbara mallar som kan inkluderas i andra vyer.
    Exempel: erb
    <%= render 'shared/header' %>
  • Layouter: Delade strukturer (t.ex. sidhuvud, sidfot) som omsluter dina vyer.
    Exempel: erb
  • Hjälpare: Ruby-metoder som förenklar komplex logik i mallar.
    Exempel: ruby
    def format_date(datum)
    date.strftime("%B %d, %Y")
    slut
  • Att undkomma HTML: Förhindrar XSS-attacker genom att rensa användarinmatning.
    Exempel: erb
    <%= h(user_input) %>

Dessa egenskaper gör ERB mångsidig och lämplig för ett brett spektrum av användningsområden.

Vanliga användningsområden för ERB

ERB används ofta i scenarier som:

  • Dynamiska webbsidor: Generering av HTML-innehåll baserat på användarinmatning eller databasfrågor.
  • Mallar för e-post: Skapa anpassningsbara e-postlayouter med dynamiska data.
  • Konfigurationsfiler: Skapa konfigurationsfiler eller rapporter med inbäddad Ruby-logik.

Du kan till exempel använda ERB för att generera en lista över produkter i en e-handelsapplikation: erb

    .
    <% @products.each do |product| %>
  • - $

  • <% end %>
.

Tips för att skriva rena ERB-mallar

För att hålla dina ERB-mallar underhållbara och effektiva, följ dessa bästa metoder:

  • Minimera Ruby Logic i mallar: Flytta komplex logik till hjälpfunktioner eller styrenheter.
  • Använd Partials: Bryt ner stora mallar till mindre, återanvändbara komponenter.
  • Undvik "deep nesting": Håll konditionaler och loopar enkla för att förbättra läsbarheten.
  • Escape Användarinmatning: Sanera alltid användarinmatning för att förhindra säkerhetsproblem.

Till exempel, istället för att skriva: erb

<% if @user.admin? %>
<p>Admin Dashboard</p>
<% else %>
<p>Kontrollpanel för användare</p>
<% end %>

Du kan flytta logiken till en hjälpprogram: ruby

def dashboard_message(användare)
användare.admin? ? "Admin Dashboard" : "User Dashboard"
slut

Och förenkla mallen: erb

<p><%= dashboard_message(@user) %></p>

Exempel: Skapa en enkel ERB-mall

Låt oss gå igenom ett praktiskt exempel på hur man skapar och renderar en ERB-mall:

Definiera ett Ruby-skript med data: ruby

kräver "erb
@items = ['Apple', 'Banana', 'Cherry']

Skapa en ERB-mall: erb

    .
    <% @items.each do |item| %>

  • <% end %>
.

Rendera mallen: ruby

mall = ERB.new(File.read('mall.erb'))
puts mall.resultat(bindning)

Utdata kommer att vara: html

    .
  • Äpple

  • Banan

  • Körsbär

.

ERB jämfört med andra templating-motorer

ERB är enkelt och nybörjarvänligt, men andra mallmotorer som Haml, Slim och Liquid erbjuder olika fördelar:

  • Haml: Använder indragningsbaserad syntax för renare och mer kortfattade mallar.
  • Slim: Liknar Haml men med fokus på minimalism och prestanda.
  • Flytande: Utformad för säker, sandboxad templating (t.ex. i Shopify).

ERB:s styrka ligger i dess enkelhet och sömlösa integration med Ruby, vilket gör det till ett utmärkt val för nybörjare och Rails-utvecklare.

Slutsats

Embedded Ruby (ERB) är ett kraftfullt men enkelt verktyg som överbryggar klyftan mellan Ruby-logik och HTML, vilket gör det till en viktig del av Rubys ekosystem. Oavsett om du bygger dynamiska webbsidor, skapar e-postmallar eller genererar konfigurationsfiler, ger ERB den flexibilitet och enkelhet som behövs för att ge dina idéer liv.

När du dyker djupare in i Ruby-utvecklingOm du behärskar ERB kommer du att kunna skapa mer dynamiska, underhållsvänliga och skalbara applikationer. Så varför inte börja experimentera med ERB redan idag? Bygg ett litet projekt, justera några mallar och se hur ERB kan förändra ditt arbetsflöde.

sv_SESwedish