Schienen: Pass parameter von view zu controller
Habe ich folgende Modelle in rails :
class Task < ActiveRecord::Base
attr_accessible :description, :name, :project
belongs_to :project
validates :name, :presence => true
end
class Project < ActiveRecord::Base
attr_accessible :name
has_many :tasks
end
Ich habe eine view, die eine Liste der Projekte verfügbar klicken Sie auf das Projekt, das ich öffnen will, eine Seite, die listet alle Aufgaben im Projekt geklickt. Die Frage ist nun, wie gebe ich die Projekt id? Ich will auch die Projekt-id ist sichtbar in vielen Controllern, also ich denke, ich sollte die Verwendung von session-Variablen oder sowas?
- Willkommen ALSO! Wenn Sie ermittelt haben, die Antwort, die Ihnen bisher am meisten geholfen, akzeptieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würden Sie wollen, verwenden Sie eine verschachtelte Ressource
Routen.rb
Die es erlauben würde, Sie zu tun
<%= link_to 'Tasks', tasks_project_path(@project) %>
Dann müsstest du einen controller für Aufgaben, die Parameter umfassen würde :project_id
/projects/:project_id/tasks
Dann im controller:
before_filter :set_project
). So würde es abgerufen werden jedes mal, hoffe, das beantwortet Ihre Frage.Können Sie dies so tun:
Hier
list_project_tasks
ist eine Handlung, intasks_controller
Oder:
Können Sie ändern Sie
index
vontasks_controller
:1) klicken Sie auf das Projekt, das ich öffnen will, eine Seite, die listet alle Aufgaben im Projekt geklickt.
- Um dies zu tun, schlage ich vor, den link_to-helper, dass die Schienen stellt, und die Verlinkung zu dem Artikel über das Rails-routing. Zum Beispiel, Ihrer Meinung nach würde die Liste alle Projekte und jedes Projekt-Element angezeigt werden würde mit
<%= link_to project.name, @project %>
oder<%= link_to project.name, project_path(@project) %>
Finden Sie eine Liste von Routen durch Eingabe von Rechen-Routen in der Kommandozeile.
2) ich bin mir nicht sicher, was genau du meinst, aber wenn die url, die Sie verwenden, ist so etwas wie /Projekte/12/Ressourcen und deren controller unten (wie /Projekte/12/Aufgaben/15) kann auf die project_id als params[:project_id], wenn die Routen eingerichtet sind, werden als verschachtelte Routen.