2011-02-16 24 views
27

Dare che ho un modello chiamato Apple e ha un controller ApplesController, i percorsi sono:Come rinominare le rotte REST nell'URL?

resources :apples 

    apples GET /apples (.:format)   {:controller=>"apples ", :action=>"index"} 
    new_apple GET /apples /new(.:format)  {:controller=>"apples ", :action=>"new"} 
edit_apple GET /apples /:id/edit(.:format) {:controller=>"apples ", :action=>"edit"} 

Vorrei mantenere tutto il codice stesso, salvo che negli URL, la "mela" sarebbe stato sostituito in macchina". Pertanto, l'URL /apples/new diventerebbe /cars/new.

C'è un modo per farlo senza toccare nessun altro codice nell'app? (Vale a dire all'interno della app, è ancora apple e ApplesController)

ho provato :as opzione:

resources :apples, :as => "cars" 

    cars GET /apples (.:format)   {:controller=>"apples ", :action=>"index"} 
    new_car GET /apples /new(.:format)  {:controller=>"apples ", :action=>"new"} 
edit_car GET /apples /:id/edit(.:format) {:controller=>"apples ", :action=>"edit"} 

Ma che solo ha cambiato il "nome" del percorso, non l'URL (in modo new_apple_path diventato new_car_path, ma new_car_path punti ancora in /apples/new invece di /cars/new)

risposta

59

Che cosa si vuole fare è passare nell'opzione :path

resources :apples, :path => "cars"

Questa sostituire tutti i riferimenti percorso con /apples-/cars

See: http://guides.rubyonrails.org/routing.html, Sezione 4.7 Tradurre i percorsi

+1

Solo per completezza, in Rails 2.3 sarebbe stato: 'risorse: mele,: come =>" auto "' –

+1

Sono nuovo di Rails (4), ma come cambia solo gli helper del percorso. Gli URL generati non cambiano. : path => "xxx" cambia gli URL – luigi7up

1

Per coloro che cercano solo di rinominare la parte metodo di supporto:

resources :apples, as: "cars" 

Ie questo sostituisce apples_path con cars_path, ma continua a utilizzare lo stesso controller/azione.

Problemi correlati