Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 11 di 32
  • livello principiante
Indice lezioni

Embedded Ruby

Creare template per contenuti dinamici con "erb"
Creare template per contenuti dinamici con "erb"
Link copiato negli appunti

Ancora lato server è possibile inserire codice Ruby all'interno di pagine HTML e XML per creare contenuti dinamici, sfruttando il sistema di templating offerto da Ruby attraverso eRuby. Più in generale erb, l'implementazione di eRuby distribuita con Ruby, fornisce un potente strumento di templating che permette di inserire delle sequenze di controllo in normale testo, non solo HTML e XML, sequenze poi eseguite come codice Ruby. Un esempio per chiarire i concetti:

require 'erb'

template = ERB.new("Il mio nome è <%= name %>")
name = "Nessuno"
puts template.run

Dopo aver creato il template e assegnato un valore alla variabile name basta eseguire template.run per ottenere il risultato voluto.

Il codice Ruby all'interno del testo va racchiuso all'interno dei delimitatori <% e %>. Esistono alcune varianti a questo sistema. Ad esempio <%= e %>, per inserire valori o semplici espressioni: mentre con i normali delimitatori il codice Ruby viene solo eseguito, in questo caso il risultato dell'esecuzione rimpiazzerà l'espressione. Ad esempio passando a erb le seguenti espressioni

<% n = 2008 %>
"Siamo nel <% n %>"
"Siamo nel <%= n %>"

nel primo caso otterremo solo "Siamo nel" poichè l'espressione tra i tag viene solo valutata, mentre nel secondo caso avremo la frase esatta "Siamo nel 2008" poiché avviene anche la sostituzione. Per avere il comportamento corretto con <% e %> bisogna impartire un comando come puts.

"La risposta è <% puts n %>"

Un'altra coppia di delimitatori utilizzabili è <%# e %> che racchiude un commento che non è valutato da Ruby. C'è infine il simbolo di linea % che è gestito come <% e %>.

Oltre che come libreria è possibile utilizzare questo tipo di templating attraverso degli utili tool come ad esempio erb, eruby ed erubis che implementano tutti e tre lo stesso sistema di embedding eRuby. eRuby ha le stesse funzioni di erb ma è scritto in C per offrire prestazioni migliori. Erubis è invece un'altra implementazione con performance migliori anche di eRuby ma soprattutto con delle utili caratteristiche proprie. L'aspetto importante di questi tool è che è possibile utilizzarli direttamente attraverso Apache con mod_ruby.

Di seguito un esempio di pagina HTML con codice eRuby:

<% 
  title = "eRuby test"
  footer = "powered by Ruby"
%>

<html>
<head>
<title><%= title %></title>
</head>
<body>
  <h1><%= 'e' + 'Ruby' %> test</h1>
  <p>Benvenuto su <%= ENV['HOSTNAME'] %>.
  <br>Saluti da <%= ENV['USER'] %>.
  <p>Qui sono le ore <%= Time.now.hour %>.

  <ul>
    <% 1.upto(5) do |i| %>
      <li>Elemento numero #<%= i %></li>
    <% end %>
  </ul>

  <hr><i><%= footer%></i>
</body>
</html>

Un elemento importante che si nota subito è la persistenza delle informazioni, ad esempio le variabili title e footer le abbiamo dichiarate nel primo tag e usate nel seguito dello script. Questo accade perché tutto il codice racchiuso tra i tag di eRuby è visto come un unico script che viene ricostruito ed eseguito da erb e famiglia. Lo stesso discorso vale per i metodi, le classi e tutto quanto rappresenta codice Ruby.

Un altro elemento di particolare interesse di eRuby è la possibilità di usare delle espressioni condizionali

<% if condizione %>
   La condizione è verificata
<% end %>

che rappresentano un ulteriore elemento di dinamicità all'interno di una pagina Web.

Ti consigliamo anche