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.
wie schon über icq, mir persönlichg würde ein content_for :title im helper und ein yield(:title) doch etwas “sauberer” anmuten. ansonsten nais :)