Liquid - Templating on Rails

1,633 views

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,633
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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.

×