Rails: Controller-Methode oder Instanzvariable in einem Helfer

8

Ich benutze das Bitly-Juwel und möchte Zugriff auf die Bitly-API innerhalb meiner Hilfsmethoden haben (die von Sichten und Mailern aufgerufen werden, um URLs zu erzeugen).

Ich initiiere eine API-Verbindung in dieser Methode in meinem ApplicationController:

(Gibt es einen geeigneteren Ort, um dies zu tun?)

%Vor%

Standardmäßig habe ich keinen Zugriff auf @bitly in meinen Helfern. Können Sie einen Weg vorschlagen, dies zu erreichen?

Der einzige verwandte Thread, den ich gefunden habe, war nicht hilfreich: Rails 3 und Controller Instance-Variablen in einem Helfer

Danke.

    
stupakov 25.09.2011, 01:32
quelle

2 Antworten

9

Rails per Konvention übergibt Instanzenvariablen, die in den Controller-Aktionen (und -Filtern) festgelegt sind, an die Ansichten. Die Hilfsmethoden sind in diesen Ansichten verfügbar und sollten Zugriff auf die Instanzvariablen haben, die Sie in Ihrer Controller-Aktion festgelegt haben.

Alternativ können Sie eine lokale Variable in Ihrer Hilfsmethode festlegen, indem Sie die Variable an die Methode übergeben oder indem Sie die Methode object # instance_variable_get verwenden: Ссылка

%Vor%

Was Ihre Bedenken bezüglich der Platzierung der Logik betrifft, sieht es nicht so aus, als ob es in den Controller gehört. Stellen Sie sich den Controller als Routing-Anfragen für Ihre Anwendung vor. Die meiste Logik sollte innerhalb Ihrer Modellklassen ausgeführt werden. "Dünner Controller, fettes Modell.": Ссылка

    
Ben Simpson 25.09.2011 01:54
quelle
2

Wenn Sie eine Controller-Methode benötigen, auf die Sie als Helfer zugreifen können, können Sie helper_method

%Vor%

Beachten Sie, dass ich auch die Methode geändert habe, damit% code_% bei jedem Aufruf nicht aufgerufen wird.

Wie Ben Simpson bemerkt hat, sollten Sie dies wahrscheinlich in ein Model verschieben.

    
axelarge 25.09.2011 03:05
quelle

Tags und Links