Aufruf einer controller-Methode aus der Sicht von Ruby on rails
Ich bin sehr neu in ruby. Ich habe einen Zweifel, wie Aufruf einer controller-Methode aus einer Sicht.
mein controller
def course_user_count
@courses=Course.all
@courses.each do |course|
@count=course.students.count
end
Habe ich diesen Aufruf @count-variable aus der Methode aus meiner Sicht natürlich.Blick.html-Code.erb
möglich, Duplikat der Können wir den Aufruf einer Controller-Methode aus einer Ansicht (wie wir Sie nennen, von Helfer im Idealfall)?
InformationsquelleAutor saran | 2013-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich verstehe nicht ganz, was Sie meinen, wenn Sie sagen, dass Sie "nennen das
@count
variable" aus Ihrer Sicht. Sind Sie nicht die Einstellung, dass die variable im controller? Wenn dem so ist, sollte es automatisch zugänglich sein, in der zugehörigen Ansicht. (Sie müssen nicht "Anruf" eine variable, Lesen Sie es oder legen Sie es.)Zweite, Ihre Methode liest jede Kurs-Schüler zählen und dann weist Sie der Variablen
@count
. Jedes mal, wenn diese variable geschrieben wird, seine Vorherige Wert wird überschrieben, so ist die Methode, wie geschrieben, ist nutzlos. Ich bin mir nicht sicher, was Sie hier versuchen -- vielleicht "initialisieren" der Steuerung durch das festlegen dieses Werts im Voraus für jeden Kurs?Durch Konvention, ein controller ist
show
Methode zeigt die Informationen für eine Zeile der zugeordneten Datenbank. Wenn das Ziel ist, zu zeigen, den Kurs des Schülers zählen in dieser Ansicht, ich würde etwas schreiben wie dieses inapp/controllers/course_controller.rb
:Und Anzeige der variable Wert, wie dies in der Vorlage
app/views/courses/show.html.erb
:In anderen Worten, ich würde nicht schreiben Sie eine Methode im controller, um wieder eine Kurs-Schüler zählen, sondern einfach nur übergeben Sie es als parameter an die Sicht, so wie ich bestehen würde, alles andere der Ansicht angezeigt werden muss-oder zumindest nichts, dass die Ansicht kann nicht den Zugriff durch eine sehr einfache Bedienung, eine Bedingung, die nicht wirklich erfüllt
@course.students.count
, aber das ist Geschmackssache.Jedoch, mag es Sinn machen, eine Methode definieren, in der die controller für die Werte, sind komplexer zu berechnen und/oder sind nicht erforderlich, jedes mal die
show
Vorlage wird angezeigt. Zu machen, die Methode callable von Ihren Ansichten, die Methode deklariert werden eine helper-Methode, als Keith erwähnt in seiner Antwort. Zum Beispiel, eine Methode, die zurückgibt, die Summe Studenten, zählen alle Kurse inapp/controllers/course_controller.rb
:Verwenden Sie die Methode, wie dies in einer Vorlage unter
app/views/courses/
zur Anzeige der Rückgabewert dieser Methode:InformationsquelleAutor Teemu Leisti
Oben auf dem controller markieren Sie die Methode, die Sie wollen, zur Verfügung, um Ihre Ansichten als Helfer-Methode:
Dann in Ihrer Ansicht, die Sie aufrufen können course_user_count und das Ergebnis speichern.
ein kleines update, es ist
helper_method :course_user_count
Diese Antwort war für mich auf Rails 4.0.0. Ich danke Ihnen sehr!
InformationsquelleAutor Keith
erklären, Methode Namen wie die helper-Methode
In der Ansicht
rufen Sie die Methode als
InformationsquelleAutor saran
Dem controller zugänglich ist, in Ihrer Ansicht über die variable:
ist standardmäßig verfügbar. Ich spreche über den controller in Verbindung mit diesem besonderen Blick natürlich.
In Ihrem Fall:
InformationsquelleAutor Miotsu