2011-01-05 3 views
5

quindi ho una classe modello chiamata Photoset e un controller denominato Set. ive got resources: set funziona per tutto tranne quando i percorsi sono generati da un'istanza del modello. per esempio se io uso:binari 3 percorsi: percorso automatico diverso per il modello

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

ottengo l'errore:

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

in ultima analisi, voglio che tutti gli URI di essere .../set/... (nome del controller) al posto di .. ./photosets/...(nome del modello)

c'è un modo per farlo ed essere ancora in grado di utilizzare gli helper?

--EDIT-- heres la mia uscita rake routes:

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"} 

che tutto funziona proprio dandy, il problema è quando provo a costruire una forma fuori un'istanza del modello. Capisco che i binari non hanno modo di sapere che sto cercando di legare il modello Photoset direttamente con il controller Set, ma non so come specificarlo.

+0

si può mostrare 'uscita routes' rake? – Heikki

risposta

10

Hai un modello Photoset, Imposta controller e gli URL devono essere nel modulo /sets/1/edit.

resources :sets, :as => "photosets" 

Funziona con una forma semplice come questo:

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

mantenendo tutte queste funzionalità uguali, c'è un modo per cambiarlo in modo che solo gli URL siano diversi? invece di '/ photosets/1/edit' posso renderlo'/sets/1/edit'? Voglio ancora usare 'form_for (@photoset)' ma voglio che punti a '/ sets/...'. – greggreg

+0

Aggiornamento della risposta. – Heikki

+1

Wow perfetto. Grazie! – greggreg

-1

È necessario impostare

resources :photosets, :as => "sets" 

che consentono di utilizzare photosets_path, photoset_path, new_photoset_path, ecc ... ma mostra l'URL come sets

Vedere here se avete bisogno di maggiori informazioni

+0

questo cambia gli helper da photoset_path a set_path sfortunatamente gli url sono tutti ancora/photoset. controlla la sezione 4.3 del link della guida di routing che hai pubblicato. – greggreg