2011-01-05 15 views
5

so habe ich eine Modellklasse namens Fotoset und einen Controller namens Sets. ive got resources: Setzt Arbeiten für alles außer wenn Pfade von einer Instanz des Modells generiert werden. wenn ich zum Beispiel verwenden:Schienen 3 Routen: verschiedene Auto-Route für Modell

<%= form_for(@photoset) do |f| %> 

i den Fehler:

no route matches {:controller=>"sets"} 

schließlich möchte ich alle URIs zu sein .../sets/... (Controller Name) statt .. ./photosets/...(Modellname)

Gibt es einen Weg dies zu tun und trotzdem die Helfer zu benutzen?

--EDIT-- here meine Harke Routen Ausgang:

sets GET /sets(.:format)   {:controller=>"sets", :action=>"index"} 
     POST /sets(.:format)   {:controller=>"sets", :action=>"create"} 
new_set GET /sets/new(.:format)  {:controller=>"sets", :action=>"new"} 
edit_set GET /sets/:id/edit(.:format) {:controller=>"sets", :action=>"edit"} 
    set GET /sets/:id(.:format)  {:controller=>"sets", :action=>"show"} 
     PUT /sets/:id(.:format)  {:controller=>"sets", :action=>"update"} 
     DELETE /sets/:id(.:format)  {:controller=>"sets", :action=>"destroy"} 

, die alle nur Dandy funktionieren, ist das Problem, wenn ich versuche, eine Form, eine Instanz des Modells zu bauen ab. Ich verstehe, dass Rails nicht wissen kann, dass ich versuche, das Photoset-Modell direkt mit dem Set-Controller zu verknüpfen, aber ich weiß nicht, wie ich das spezifizieren soll.

+0

Können Sie zeigen 'rake routes' Ausgang? – Heikki

Antwort

10

Sie haben ein Modelset-Modell, Controller-Sets und URLs müssen in Form /sets/1/edit sein.

resources :sets, :as => "photosets" 

Arbeiten mit einer einfachen Form wie folgt aus:

<%= form_for(@photoset) do |f| %> 
    <%= f.text_field :title %> 
    <%= f.submit "Save" %> 
<% end %> 
+0

Beibehaltung all dieser Funktionalität, gibt es eine Möglichkeit, es zu ändern, so dass nur die URLs anders sind? anstelle von '/ photosets/1/edit' könnte ich es'/sets/1/edit' machen? Ich möchte immer noch 'form_for (@photoset)' verwenden, aber ich möchte, dass es auf '/ sets/...' zeigt. – greggreg

+0

Die Antwort wurde aktualisiert. – Heikki

+1

Wow perfekt. Vielen Dank! – greggreg

-1

Sie setzen sollten

resources :photosets, :as => "sets" 

die Ihnen erlauben, photosets_path zu verwenden, photoset_path, new_photoset_path, etc ... aber zeigt die URL als sets

here Sehen Sie, wenn Sie weitere Informationen benötigen

+0

das ändert die Helfer von Photoset_path zu Set_path Leider sind die URLs immer noch/Photoset. Überprüfen Sie Abschnitt 4.3 des Routing-Guide-Links, den Sie gepostet haben. – greggreg