2010-04-23 4 views
17

Wie würde ich die create-Aktion von einem link_to korrekt aufrufen? Ich verwende REST (map.resources: recipes). Hier ist die Aktion erstellen:Ruby on Rails: Kann ich eine "link_to" aufrufen, um eine create action aufzurufen?

def create 
    recipe = Recipe.create(:name => "French fries") 
    redirect_to recipe 
end 

Zum Beispiel, ich dachte, so etwas wie dies funktionieren könnte:

<%= link_to "Create a default recipe", recipe_path, :method => :post %> 

Ich bin mir nicht sicher, ob das eine empfohlene (oder sogar richtig) Art und Weise, es zu tun. Irgendeine Idee?

Antwort

28

Das sollte funktionieren, wenn Sie recipes_path für recipe_path ersetzen.

recipes GET /recipes(.:format) {:controller=>"recipes", :action=>"index"} 
     POST /recipes(.:format) {:controller=>"recipes", :action=>"create"} 

Das ist ein Hinweis darauf, dass der URL-Helfer („recipes_path“), für die Aktion erstellen aus dem Controller-Namen aus:

Wenn Sie am Ausgang der rake routes aussehen, sollten Sie so etwas wie sehen mit _path am Ende geheftet, mit :method => :post. Derselbe Pfad unter Verwendung von :method => :get (der die Standardeinstellung ist) wird der Aktion index zugeordnet.

Denken Sie daran, dies funktioniert nicht, wenn Javascript deaktiviert ist, da Rails tatsächlich einen on_click-Handler hinzufügt, der ein Formular für den POST erstellt. Gleiches gilt für die Löschung von Links mit der Option :confirm.

+0

schätzen Sie Ihre nette Erklärung zetetic! ich danke dir sehr! :) – sjsc

Verwandte Themen