Leitlinien für den Aufruf von controller-Methoden in helper-Module?
Paar Fragen:
-
Ist es möglich den Aufruf einer controller-Methode in einer helper-Modul (z.B., application-helper)?
-
Wenn ja, wie wirkt sich die Helfer behandeln das Rendern von views? Es ignorieren?
-
In welche Instanzen Sie aufrufen möchten, eine controller-Methode von einem Helfer? Ist es schlechte Praxis?
-
Haben Sie Beispielcode, wo Sie sind aufrufende controller-Methoden in Helfer?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie in der Regel nicht telefonisch, controller-Methoden, die von Helfern. Das heißt: wenn du meinst, eine Methode, die Daten sammelt und dann rendert eine view (eine andere Methode, die aufgerufen werden muss, sollte wohl nicht in einem controller).
Es ist definitiv eine schlechte Praxis und bricht MVC.
Es ist jedoch durchaus möglich, die controller-Methoden in der Aussicht, ein gutes Beispiel ist zum Beispiel die
current_user
Methode.Machen Sie eine controller-Methode verfügbar in den Ansichten, wie eine helper-Methode, nur
Solche Methode ist am besten definiert in der
private
Abschnitt, oder es könnte eine Aktion (wenn Sie einen Platzhalter in Ihre routing).Erklären Sie Ihre Methoden auf den entsprechenden controller
Im Kopf, die die Steuerung erklären
Möchten Sie vielleicht zu erklären, diese Methoden unter eigenem Staat
... Und das ist es, jetzt können Sie mit Ihrer Methode auf einen Helfer
Aufruf einer controller von einem Helfer gegen das MVC-Muster. IMO, wenn Sie benötigen, rufen Sie einen controller aus einer Rails-view Helfer (wie
application_helper
), dann gibt es etwas über das design, die verbessert werden könnten. Die Absicht ist, dass die Helfer "helfen" Ansichten, und deshalb reden Sie nur mit Modellen.Ich werde mich nicht verteidigen MVC-selbst hier (es gibt eine Tonne von Referenzen auf der Website), aber dieser thread SO über den Aufruf der controller aus einer Ansicht soll Ihnen den Einstieg.
Aufruf controller aus der view? (beachten Sie, dies ist ein ASP.NET thread, so dass nur die high-level principles relevant sind).