1 2 3 4 5 6 7 | Add localized templates # Default locale app/views/messages/index.html.erb # I18n.locale is set to :da (Danish) app/views/messages/index.da.html.erb |
Wird auch langsam Zeit!
Browsing the blog archives for Januar, 2009
1 2 3 4 5 6 7 | Add localized templates # Default locale app/views/messages/index.html.erb # I18n.locale is set to :da (Danish) app/views/messages/index.da.html.erb |
Wird auch langsam Zeit!
Wie wär’s mit einem kleinen Helper zum Setzen des Seitentitels, der sowohl einen String als auch einen Block (mit HTML, das dann rausgesanitized wird) entgegen nimmt?
1 2 3 4 5 6 7 | def set_page_title(title = nil, &block) if block_given? html = capture(&block) concat(html) end content_for(:title, title || strip_tags(html)) end |
In einer HAML-View setzt man den Titel der Seite dann so:
1 | - set_page_title "Neuer User" |
Oder mit einem Block, der auch ausgegeben wird (aber im Titel werden alle HTML-Tags entfernt):
1 2 3 4 | - set_page_title do
%h1
%strong Ein neuer User.
Wie spannend! |
Den Seitentitel kann man dann per yield :title ausgeben (idealerweise irgendwo im <title>-Tag.
Warum wird der Seitentitel überhaupt in einer View gesetzt? Weil er meiner Meinung nach die Angelegenheit eben dieser ist, und nicht des Controllers. So!
Update: mein Kollege Pascal wies mich völlig zurecht darauf hin, dass man den fertigen Titel konsequenter Weise per content_for und yield statt einer Instanzvariable übergeben sollte. Habe den Code entsprechend angepasst.
In meiner neuen Anwendung will ich auf den langweiligen Aktivierungs-Link-Krams verzichten, der per Mail verschickt wird — neue User sind sofort eingeloggt und aktiviert. Sie erhalten trotzdem einen Link per E-Mail, der die Adresse verifizieren soll — dies aber nur, damit ich E-Mail-Benachrichtigungen nicht an die falschen User oder nicht existierende Adressen schicke. Carlo hat ein Gem gefunden, das mir bei der Überprüfung des letzten Punkts hilft:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class User < ActiveRecord::Base validates_uniqueness_of :email, :case_sensitive => false validate :valid_email? private def valid_email? address = EmailVeracity::Address.new(email) unless address.valid? errors.add(:email, address.errors.join(", ")) end end end |
Das ganze heißt email-veracity und liegt hier [github].
Carlo stürzt sich gerade in die wundervolle Welt von Rails und bloggt auf rooohby über all die kleinen und großen Dinge, die er lernt.
Jetzt ist das Teil schon über ein Jahr offline — höchste Zeit, dass ich mal wieder Zeit in mein kleines Dauerprojekt aufeinander.de investiere! Habe über die letzten Wochen ein bisschen gehackt und werde das hoffentlich noch bis zu einem Punkt fortsetzen, an dem ich das Teil auch online stellen kann. Jetzt, wo ich mein Blog reaktiviert habe, kann ich ja mal etwas über die Entwicklung schreiben. w00t!
Endlich komme ich dazu, das großartige github.com für ein eigenes Projekt zu benutzen — wenn ich auch aktuell der einzige Entwickler bin. Außerdem hat mir mein Kollege Ali den Pivotal Tracker empfohlen, einen Issue- bzw. Story-Tracker für SCRUM-basierte Projekte. Und woah, das Teil rockt! Sowohl von Funktionalität als auch UI her super, und dazu auch noch kostenlos. Kann ich uneingeschränkt empfehlen.
Das neue aufeinander.de ist mein erstes Projekt mit Rails 2.2, und damit auch das erste, in dem ich die neue Internationalisierungs-API ausprobieren kann. Die mal echt super geworden ist! Neue Locales in die Anwendung zu integrieren könnte einfacher nicht sein — endlich muss man nicht mehr neidisch auf andere Frameworks schauen oder auf in den meisten Fällen arg durchwachsene Third-Party-Plugins zurück greifen.
(Hat schonmal jemand in den Quellcode von Ruby-GetText geschaut? Meine Herren, pfui…)
Für die Views kommen wieder einmal HAML und SASS zum Einsatz, und ich freue mich schon auf das vor kurzem für Rails 2.2 angepasste FlexImage.
Für die automatisierten Tests verzichte ich dieses Mal auf die üblichen Verdächtigen (shoulda, test/spec, rspec) und bleibe bei Test::Unit mit den von Rails mitgebrachten Helferlein. Statt Fixtures setze ich machinist (zusammen mit faker und random_data) zum Generieren von Testdaten ein (dazu schreibe ich später noch etwas), irgendwann wird sich wahrscheinlich auch noch mocha hinzu gesellen.
Genug technisches Gefasel. Mal schauen, wann ich etwas online stellen kann. Werde hoffentlich über die nächsten Wochen hier und da etwas Zeit finden, ein bisschen zu hacken, vielleicht ja auch bei den total superen Happy Hacking-Sessions mit den werten Kollegen. Drückt die Daumen!