Probleme mit @flash und RoR 2.0.2

Hallo,

ich vermute mal, dass es wieder ein blöder Fehler meinerseits ist, aber
ich bin im Moment einfach ratlos.
Ich baue gerade als Fingerübung die „depot“-Anwendung aus dem Buch von
Dave T. in RoR 2.0.2 nach. Das klappte bis jetzt auch ganz gut,
nachdem ich mich mit einigen Änderungen der neuen Rails-Version vertraut
gemacht hatte.
Nun aber komme ich beim Einsatz des Flash nicht weiter.

Wißt Ihr, ob sich da auch etwas geändert hat? Ich konnte diesbezüglich
keine Verlautbarungen finden.

Ich gehe ganz genau wie in Thomas‘ Buch vor, habe also in meinem
Controller StoreController diese Zeilen:
rescue
logger.error(“Attempt to access invalid product #{params[id]}”)
flash[:notice] = ‘Invalid product’
redirect_to(:action=>‘index’)
end

Und in dem Layout der Anwendung gebe ich den Inhalt von Flash so aus:
<% if @flash[:notice] -%>

<%= @flash[:notice] %>
<% end -%>

Das Ganze führt nun aber bei mir zu folgender Fehlermeldung:

NoMethodError in Store#index

Showing layouts/store.html.erb where line #25 raised:

You have a nil object when you didn’t expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]

Zeile 25 ist diese hier:
<% if @flash[:notice] -%>

Ich bin ratlos.
Wäre super, wenn jemand von Euch mir mit einem Schlag auf den Hinterkopf
weiterhelfen könnte!
:wink:

Thanx und ciao,
Andreas

Hallo.

Lass mal das @-Zeichen weg (im Controller wie in der View). Das ist
uralt
und schon in 1.2.x deprecated gewesen.

Grüße
Nicolai

Am 15.02.08 schrieb Andreas F. [email protected]:

Hallo Nicolai,

Lass mal das @-Zeichen weg (im Controller wie in der View). Das ist
uralt
und schon in 1.2.x deprecated gewesen.

oh Mann, danke!

Vielleicht sollte ich dieses Buch von Dave T. doch weglegen. Es ist
zwar quasi ein Standardwerk und sehr gut geschrieben (eine Seltenheit
bei IT-Büchern …), aber ganz offensichtlich doch veralteter, als ich
dachte.

Dank Deinem Hinweis kann ich nun jedenfalls weitermachen!

So long,
Andreas

Hallo Andreas.

Ja, das ist leider wahr. Dave T. hat sich dafür entschieden, erst
die
dritte Version vom “Pickaxe Book” zu schreiben, bevor er die Rails-Serie
aktualisiert. – Ich denke, man sollte diesen Umstand einfach so
anerkennen,
dass sich in der kurzlebigen Welt von Web-Frameworks Bücher immer
weniger
zum Lernen eignen.

Viel Spaß noch!

Nicolai

PS: Gleiches gilt natürlich auch für die Instanzvariablen @params und
@session. Auch hier sollten die Methoden params und session verwendet
werden.

Ich nehme an, dass für alle anderen (also „normalen") Instanzvariablen
aber das @ erhalten bleibt, oder?

Unbedingt!

“Basically, a good rule of thumb here is don’t use an instance variable
in
your controller or view unless you created that instance variable.”

Mehr Infos gibt es im offiziellen Weblog:

Hallo Nicolai,

Ich denke, man sollte diesen Umstand einfach so
anerkennen, dass sich in der kurzlebigen Welt
von Web-Frameworks Bücher immer weniger
zum Lernen eignen.

da hast Du wohl recht. Und das, wo sich solche Bücher doch so schön im
Zug lesen lassen …

PS: Gleiches gilt natürlich auch für die Instanzvariablen @params und
@session. Auch hier sollten die Methoden params und session verwendet
werden.

Ich nehme an, dass für alle anderen (also „normalen“) Instanzvariablen
aber das @ erhalten bleibt, oder?
Betroffen sind also flash, params und session.

OK, wieder etwas gelernt.

So long,
Andreas

Zumindest im Moment aber ist “The Rails Way” sehr zu empfehlen …
geradezu biblisch.

Mal sehen, wie lange es “hält” :slight_smile:

Stefan

Stefan T., Stefan Tilkov’s Blog [Stefan Tilkov’s Blog]

Am 15.02.2008 um 14:22 schrieb Andreas …:

Mehr Infos gibt es im offiziellen Weblog:
Ruby on Rails — Use params, not @params

Ich sollte öfter in dieses Blog hineinschauen …

Ich empfehl eher sowas: http//del.icio.us/rss/popular/rails

Da verpasst man kaum noch was.

ciao, tom


Thomas R. “TomK32” Koll || http://tomk32.de || http://ananasblau.com
(NEW)
just a geek trying to change the world
Skype: TomK32 || Mail: [email protected]

Mehr Infos gibt es im offiziellen Weblog:
Ruby on Rails — Use params, not @params

Ich sollte öfter in dieses Blog hineinschauen …

Thanx,
Andreas