Ich habe einige Ruby-Methoden, die bestimmte (oder alle) Controller benötigen. Ich habe versucht, sie einzulegen /app/helpers/application_helper.rb
. Ich habe das für Methoden verwendet, die in Ansichten verwendet werden sollen. Controller sehen diese Methoden jedoch nicht. Gibt es einen anderen Ort, an dem ich sie platzieren sollte, oder muss ich anders auf diese Hilfsmethoden zugreifen?
Verwendung der neuesten stabilen Schienen.
helper_method :my_helper_method
inApplicationController
sie zu den Ansichten zur Verfügung zu stellen.Ab Rails 4 sind Bedenken der richtige Weg. Es gab einen anständigen Artikel, der immer noch über die Wayback-Maschine eingesehen werden kann .
Wenn Sie in Ihren Controller-Ordner schauen, sollten Sie im Wesentlichen einen betroffenen Unterordner sehen. Erstellen Sie dort ein Modul in dieser Richtung
module EventsHelper def do_something end end
Dann in den Controller einfach einbinden
class BadgeController < ApplicationController include EventsHelper ... end
quelle
extend ActiveSupport::Concern
mit Controller-Bedenken arbeiten müssen?Sie sollten Methoden in Application Controller definieren. Wenn Sie nur wenige Methoden haben, können Sie wie folgt vorgehen
class ApplicationController < ActionController::Base helper_method :first_method helper_method :second_method def first_method ... #your code end def second_method ... #your code end end
Sie können auch Hilfedateien wie folgt einfügen
class YourController < ApplicationController include OneHelper include TwoHelper end
quelle
helper_method :first_method, :second_method
.Sie können beliebige Hilfsmethoden von einem Controller aus aufrufen, indem Sie
view_context
zquelle
Ryan Bigg Antwort ist gut.
Eine andere mögliche Lösung besteht darin, Ihrem Controller Helfer hinzuzufügen:
class YourController < ApplicationController include OneHelper include TwoHelper end
Freundliche Grüße!
quelle
Wenn Sie Helfer in den Controller aufnehmen, werden die Hilfsmethoden als Aktionen angezeigt!
# With new rails (>= 5) helpers.my_helper_method # For console helper.my_helper_method
quelle