2009-08-21 11 views
7

Ich habe eine Sidebar, die Logik haben wird, ähnlich wie eine Ansicht mit einem Controller spricht. Wo stelle ich die Logik für das Partielle ein? Erstelle ich einen neuen Controller für das Layout und lege es dort ein?Ruby on Rails Logik für eine partielle in einem Layout

Das Layout ist für eingeloggte Benutzer wie ein Dashboard. Das Dashboard wird eine Seitenleiste haben, die auf jeder Seite den gleichen dynamischen Inhalt anzeigt. Da es auf jeder Seite angezeigt wird, möchte ich es in eine partielle setzen.

Ich bin nur verwirrt auf, wo die Funds und all diese Informationen zu setzen.

Antwort

8

Vielleicht gibt es eine bessere Möglichkeit, dies zu tun, aber wenn es auf den meisten oder allen Seiten ist, könnten Sie eine before_filter auf Ihrem ApplicationController erstellen. Sie müssen skip_before_filter auf den Controllern/Aktionen aufrufen, die die Daten nicht benötigen.

class ApplicationController < ActionController::Base 
    before_filter :load_sidebar_data 

protected 
    def load_sidebar_data 

    end 
end 

Wenn Sie die meisten Seiten brauchen sie nicht auf Sie immer noch die Methode in der Application setzen würde, dann würden Sie nur das hinzufügen, bevor Filter, wo Sie es brauchen.

+0

Andy, du bist eine große Hilfe für mich in den letzten 2 Tage! Vielen Dank! – Ryan

+0

Ich habe eine Sidebar, die auf allen Seiten mit Ausnahme der Homepage identisch ist, und ich benutze diesen Code, um die erforderlichen Daten zu bekommen - jetzt frage ich mich, wo ist der richtige Ort, um den tatsächlichen View-Skript-Code zu setzen? – jackocnr

1

Legen Sie die Teil in den Layouts-Ordner. Der Name der Datei sollte mit einem Unterstrich beginnen, zum Beispiel "_mypartial.html.erb".

Dann in Ihren Ansichten, verwenden Sie den folgenden Code, um den Teil

„mypartial“%>

Hinweis enthält, dass Sie nicht den Unterstrich in dem eingebetteten Ruby-Code enthalten, wenn die teilweise die Angabe zu machen.