Wie, um das setup eine Globale variable in einem controller
Ich nehmen Eingaben vom Benutzer
In meiner index action ich haben:
@b = Ece.find_by_code("#{params[:course]}")
Möchte ich den gespeicherten Wert in @b in meiner show-action sowie in der index-Aktion.
In meiner show-action ich will etwas wie das hier tun:
<p><%= link_to "Forum", href="/courses/#{Course.find_by_courseCode(<%= @b %>).id}", :class=>"question_button round" %>
Wie kann ich ein setup @b zu global sein, so dass beide dieser Aktionen können es verwenden,
Hinweis: Ece und Natürlich sind zwei verschiedene Modelle
InformationsquelleAutor Wasi | 2011-08-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wollte ich nur verwenden, einen Weg zu declare @b werden global.
und mit $b anstelle von @b funktioniert der trick
InformationsquelleAutor Wasi
Könnte man es in einer vor-filter wie dieser:
Controller Filter sind ein Teil von ActionController und können Sie finden die Dokumentation auf Sie hier. Zusätzlich zu den vor-Filter, die ausgeführt wird, bevor eine Aktion gibt es auch nach dem filtern und um Filter, die laufen herum und nach einer Aktion jeweils.
InformationsquelleAutor Devin M
In Rails ist es keine gute Praxis definieren
@b
irgendwo Sie nicht sehen können, es definiert, wie Sie vielleicht finden es schwer, Abbildung unserem das, was in den controller, wenn du zurück blickst auf es später.Schlage ich vor Sie
@b
explizit am start, der sowohl die show und in der index-Aktion: in anderen Worten, tun, wiederholen Sie Ihrein jede der show-und index-Aktionen - das ist das, was Sie bereits tun, glaube ich.
Wenn Sie wollen, zu bereinigen, den controller code ein wenig, dann tun Sie definieren private function
so, dass Sie jetzt Ihre controller-Karte und die index-Aktionen set @b auf diese Weise
Haben Sie jetzt sauberer code, aber gleichzeitig werden Sie sofort wissen, indem man die controller, die Sie
@b
und dass Sie mitparams
zu tun.Als für den link, den Sie hinzufügen möchten, in Ihrem show-action, nicht finden, die natürlich
Course.find_by_courseCode
im Blick - halten Sie die Ansicht-Reiniger - und bewegen, die zu der bit-controller. So, jetzt Ihr show-action im controller wird eine Zeile wie dieseund Sie können schreiben Sie Ihre link anzeigen mehr sauber als
InformationsquelleAutor Andrea