Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Einleitung
1 Einführung
2 Installation
3 Erste Schritte
4 Einführung in Ruby
5 Eine einfache Bookmarkverwaltung
6 Test-Driven Development
7 Rails-Projekte erstellen
8 Templatesystem mit ActionView
9 Steuerzentrale mit ActionController
10 Datenbankzugriff mit ActiveRecord
11 E-Mails verwalten mit ActionMailer
12 Nützliche Helfer mit ActiveSupport
13 Ajax on Rails
14 RESTful Rails und Webservices
15 Rails mit Plug-ins erweitern
16 Performancesteigerung
17 Sicherheit
18 Veröffentlichen einer Rails-Applikation auf einem Server
Ihre Meinung?

Spacer
 <<   zurück
Ruby on Rails 2 von Hussein Morsy, Tanja Otto
Das Entwickler-Handbuch
Buch: Ruby on Rails 2

Ruby on Rails 2
geb., mit DVD
699 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-779-1
Online bestellenPrint-Version jetzt bestellen
* versandkostenfrei in (D) und (A)
Pfeil 5 Eine einfache Bookmarkverwaltung
  Pfeil 5.1 Rails-Projekt erstellen
  Pfeil 5.2 Weitere Views anlegen
  Pfeil 5.3 Layout
  Pfeil 5.4 Model
  Pfeil 5.5 CRUD - Create - Read - Update - Delete
  Pfeil 5.6 Fehlerbehandlung in Formularen
  Pfeil 5.7 Flash-Messages
  Pfeil 5.8 Refaktorisierung mit Helper und Partials
  Pfeil 5.9 Authentifizierung
  Pfeil 5.10 Routing
  Pfeil 5.11 RESTful Rails
  Pfeil 5.12 Darstellungsformate in RESTful Rails
  Pfeil 5.13 Ajax


Rheinwerk Computing - Zum Seitenanfang

5.7 Flash-Messages  topZur vorigen Überschrift

Wenn wir einen neuen Bookmark anlegen, einen vorhandenen ändern oder einen Bookmark löschen, haben wir definiert, dass, wenn die Aktion erfolgreich war, die Index-Seite angezeigt werden soll. Schön wäre aber doch, wenn eine Bestätigungsmeldung ausgegeben würde, die dem Benutzer mitteilt, dass die Aktion erfolgreich war.

Dazu gibt es in Rails sogenannte Flash-Messages, die vom Controller gesteuert werden. Eine Flash-Message ist ein Hash, der nur für eine Anfrage gültig ist und danach wieder gelöscht wird. Dies hat also nichts mit dem Adobe-Flash-Format zu tun.

Um an der Oberfläche Bestätigungsmeldungen oder Notizen auszugeben, wird die Flash-Message (flash[:notice]) genutzt. Wir geben eine Flash-Message für die Actions create, update und destroy an. Flash-Messages müssen immer vor einem redirect angegeben werden:

Listing  app/controllers/bookmarks_controller.rb

...

def create
  @bookmark = Bookmark.new(params[:bookmark])
  if @bookmark.save
    flash[:notice] = "Favorit wurde erfolgreich angelegt."
    redirect_to :action => "index"
  else
    render :action => "new"
  end
end

def update
  @bookmark = Bookmark.find(params[:id])
  if @bookmark.update_attributes(params[:bookmark])
    flash[:notice] = "Favorit wurde erfolgreich geändert."
    redirect_to :action => "index"
  else
    render :action => "edit"
  end
end

def destroy
  @bookmark = Bookmark.find(params[:id])
  @bookmark.destroy
    flash[:notice] = "Favorit wurde erfolgreich gelöscht."
    redirect_to :action => "index"
end

Flash-Message ausgeben

Damit die Flash-Messages auch angezeigt werden, müssen wir sie in den entsprechenden Views ausgeben. Da wir unsere Messages immer auf der Index-Seite anzeigen wollen, können wir das in dem View index.html.erb machen. Für den Fall, dass wir irgendwann einmal auch in anderen Views eine Flash-Message ausgeben wollen, können wir die Ausgabe auch in der application.html.erb vornehmen, da diese für alle Views gültig ist:

Listing  app/views/layouts/application.html.erb

...
<body>
  <div id="container">
    <div id="header">
      <h1>Meine Linksammlung</h1>
    </div>
    <div id="content">
      <%= flash[:notice] %>
      <%= yield %>
    </div>
  </div>

</body>
...

Flash-Message formatieren

Wenn Sie die Ausgabe der Flash-Message formatieren möchten, können Sie einen Bereich um die Message herum setzen, den Sie dann in der CSS-Datei formatieren können. Wir haben dafür zwei Klassen, flash und notice, in unserer CSS-Datei angelegt. Das heißt, wir müssen nur noch in der application.html.erb den Bereich anlegen und eine Abfrage ergänzen, ob eine Flash-Message gesetzt ist, damit nur dann dieser Bereich angezeigt wird:

Listing  app/views/layouts/application.html.erb

<body>
  <div id="container">
    <div id="header">
      <h1>Meine Linksammlung</h1>
    </div>
    <div id="content">
      <% if flash[:notice] %>
        <div class="flash notice">
          <%= flash[:notice] %>
        </div>
      <% end %>
      <%= yield %>
    </div>
  </div>

</body>

Wenn Sie jetzt zum Beispiel einen Eintrag löschen, wird die formatierte Flash-Message ausgegeben:

Abbildung  Ausgabe formatierte Flash-Message

Fehlermeldungen

Sie können auch Fehlermeldungen als Flash-Message ausgeben. Die Syntax lautet:

flash[:error] = "Fehlertext"


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
  Zum Katalog
Zum Katalog: Ruby on Rails 2
Ruby on Rails 2
Jetzt bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Ruby on Rails 3.1






 Ruby on Rails 3.1


Zum Katalog: Responsive Webdesign






 Responsive Webdesign


Zum Katalog: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Katalog: JavaScript






 JavaScript


Zum Katalog: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de