2010-11-09 11 views
5

Nachdem ich mit Rails für eine Ansicht Stunden herum gespielt habe, habe ich tatsächlich einen Link bekommen, um eine Methode in meinem Controller aufzurufen. Aber ich verstehe immer noch nicht, warum all meine anderen Versuche gescheitert sind. Ich hoffe, Sie könnten mir dabei helfen.Aufruf einer Controller-Aktion mit link_to

Ich habe das Gerüst "Cars". Wenn Sie in der Show-Ansicht für ein Auto sind, klicken Sie auf einen Link, der die Methode "drive" in meinem Auto-Controller aufruft.

Das funktioniert:<%= link_to "Drive", drive_car_path(@car) %>

Es scheint, funktioniert dies nur, wenn ich diese meine routes.rb ist:

resources :cars do 
    member do 
    get 'drive' 
    end 
end 

Warum <%= link_to "Drive", car_path, :method => :drive %> nicht?

Muss ich eine GET in die Datei routes.rb für jede Methode, die ich in meinem Controller erstellen?

Ich kann nicht scheinen, irgendwelche Aufstellungsorte zu finden erklären, wie man Verbindungen zusammen mit Wegen benutzt. Sie scheinen nur getrennt zu sein. Habt ihr leicht verständliche Tutorials dazu? Auch

+0

Versuchen Sie in der Befehlszeile "Rake-Routen", um zu sehen, welche Optionen Sie haben. –

Antwort

10

link_to "Drive", :controller => "car", :action => "drive"

Versuchen, method ist für die Wahl der HTTP-Methode (GET, POST, ...). Es ist nicht method wie in der Routine.

Achten Sie darauf, zu überprüfen, Rails Routing from the Outside In und The Lowdown on Routes in Rails 3, sie sind beide tolle Ressourcen.

+1

Ahh, "Methode" macht jetzt viel mehr Sinn. – deRailed

+0

Natürlich wartete ich nur darauf, ob jemand anderes etwas beizutragen hatte. Tank dich. – deRailed