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.
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.": Ссылка
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.
Tags und Links ruby-on-rails helpers