Your SlideShare is downloading. ×
Templating on Rails

         Stefan Sprenger
  d.k.d Internet Service GmbH
Agenda
• Templating
  •   Warum?
• Liquid
  •   Markup
  •   in Rails integrieren
  •   ohne Rails?
Templating
Warum?
Hauptgründe


• nicht jeder kann programmieren
• einfacher zu bearbeiten
• sieht schöner aus
Entwickler
    vs.


Designer
Entwickler

• will Aufgaben abgeben
• Zugriff auf Objekte begrenzen
• möchte Kontrolle behalten
• Template-Engine sollte l...
Designer

• möchte sein Layout administrieren
• kann HTML
• kennt sich nicht mit Rails aus
• es sollte leicht erlernbar se...
Was bringt
Rails mit?
Nichts.
Und was ist mit ERB?
Verletzt Anforderungen.
Liquid
Liquid

• Template Engine
• eigene mächtige Markup-Sprache
• als Gem und Plugin verfügbar
• seit 2006 aktiv in Entwicklung
Wann sollte ich
Liquid nutzen?
Wann sollte ich Liquid nutzen?
Ich will..
    •   Benutzern ermöglichen ihr Layout zu
        administrieren
    •   die Z...
Wer nutzt Liquid?

•   Shopify
•   Mephisto
•   Palani
•   ... und viele andere
Markup
Markup



• Output Markup
• Tag Markup
Markup


<h1>Produktverzeichnis</h1>
<ul>
 <li>Raumschiff</li>
 <li>Rennwagen</li>
</ul>
Markup

                                 Output
<h1>{{ title }}</h1>
<ul>
 {% for product in products %}   Tag
   <li>{{ p...
Markup - Tags

• Bedingungen
• Schleifen
• Fallunterscheidung
• Zyklen
• aber auch erweiterbar...
Markup - Filter


{% for product in products %}
                                Filter
  {{ product.name | upcase }}
{% en...
Markup - Filter

• auf Output-Markup anwendbar
• Liquid liefert Filter mit
• leicht erweiterbar
• Liquid greift auf Rails-...
Liquid in
Rails integrieren
Möglichkeiten

• als Ersatz für ERB
  •   *.liquid-Dateien in app/views/
• „Liquid-Partials“
  •   Partielles Rendern von ...
Vorbereitungen
• im Model Zugriffsrechte
  definieren


  class Product < ActiveRecord::Base
    liquid_methods :name
  end
Implementierung
• Parsing und Rendering sind
  voneinander getrennt

  t = Liquid::Template.parse(“Hallo {{ usergroup }}!“...
Funktioniert Liquid
 auch ohne Rails?
Ja.
gem install liquid
Vorbereitungen

•   Klasse muss to_liquid-Methode haben

    class Book

      def initialize(title)
        @title = titl...
Implementierung

require 'rubygems'
require 'liquid'
require 'book'

book = Book.new('Metaprogramming Ruby')
t = Liquid::T...
Mehr Informationen


• www.liquidmarkup.org
• http://github.com/tobi/liquid/
• Railscast #118
Q&A
Danke.
Upcoming SlideShare
Loading in...5
×

Liquid - Templating on Rails

1,492

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,492
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Liquid - Templating on Rails"

  1. 1. Templating on Rails Stefan Sprenger d.k.d Internet Service GmbH
  2. 2. Agenda • Templating • Warum? • Liquid • Markup • in Rails integrieren • ohne Rails?
  3. 3. Templating
  4. 4. Warum?
  5. 5. Hauptgründe • nicht jeder kann programmieren • einfacher zu bearbeiten • sieht schöner aus
  6. 6. Entwickler vs. Designer
  7. 7. Entwickler • will Aufgaben abgeben • Zugriff auf Objekte begrenzen • möchte Kontrolle behalten • Template-Engine sollte leicht integrierbar sein
  8. 8. Designer • möchte sein Layout administrieren • kann HTML • kennt sich nicht mit Rails aus • es sollte leicht erlernbar sein
  9. 9. Was bringt Rails mit?
  10. 10. Nichts.
  11. 11. Und was ist mit ERB?
  12. 12. Verletzt Anforderungen.
  13. 13. Liquid
  14. 14. Liquid • Template Engine • eigene mächtige Markup-Sprache • als Gem und Plugin verfügbar • seit 2006 aktiv in Entwicklung
  15. 15. Wann sollte ich Liquid nutzen?
  16. 16. Wann sollte ich Liquid nutzen? Ich will.. • Benutzern ermöglichen ihr Layout zu administrieren • die Zugriffe regeln • Templates in der Datenbank speichern • Liquid auch für E-Mails nutzen
  17. 17. Wer nutzt Liquid? • Shopify • Mephisto • Palani • ... und viele andere
  18. 18. Markup
  19. 19. Markup • Output Markup • Tag Markup
  20. 20. Markup <h1>Produktverzeichnis</h1> <ul> <li>Raumschiff</li> <li>Rennwagen</li> </ul>
  21. 21. Markup Output <h1>{{ title }}</h1> <ul> {% for product in products %} Tag <li>{{ product.name }}</li> {% endfor %} </ul>
  22. 22. Markup - Tags • Bedingungen • Schleifen • Fallunterscheidung • Zyklen • aber auch erweiterbar...
  23. 23. Markup - Filter {% for product in products %} Filter {{ product.name | upcase }} {% endfor %}
  24. 24. Markup - Filter • auf Output-Markup anwendbar • Liquid liefert Filter mit • leicht erweiterbar • Liquid greift auf Rails-Helper zu
  25. 25. Liquid in Rails integrieren
  26. 26. Möglichkeiten • als Ersatz für ERB • *.liquid-Dateien in app/views/ • „Liquid-Partials“ • Partielles Rendern von Liquid-Markup • z.B. für größere Texte
  27. 27. Vorbereitungen • im Model Zugriffsrechte definieren class Product < ActiveRecord::Base liquid_methods :name end
  28. 28. Implementierung • Parsing und Rendering sind voneinander getrennt t = Liquid::Template.parse(“Hallo {{ usergroup }}!“) t.render( ‘usergroup‘ => ‘Rails Usergroup‘ ) String => "Hallo Rails Usergroup!"
  29. 29. Funktioniert Liquid auch ohne Rails?
  30. 30. Ja.
  31. 31. gem install liquid
  32. 32. Vorbereitungen • Klasse muss to_liquid-Methode haben class Book def initialize(title) @title = title end def to_liquid Hash { ‘title‘ => @title } end end
  33. 33. Implementierung require 'rubygems' require 'liquid' require 'book' book = Book.new('Metaprogramming Ruby') t = Liquid::Template.parse('Es heißt {{ book.title }}') puts t.render('book' => book) => "Es heißt Metaprogramming Ruby"
  34. 34. Mehr Informationen • www.liquidmarkup.org • http://github.com/tobi/liquid/ • Railscast #118
  35. 35. Q&A
  36. 36. Danke.

×