2011-02-16 21 views
27

Apple adında bir modelim olduğunu ve ApplesController kontrolörüne sahip olduğunu belirtin:URL'de REST rotaları nasıl yeniden adlandırılır?

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

Tüm kodları aynı tutmak istiyorum, URL'lerde "apple" yerine "car". Yani, /apples/new URL'si /cars/new olur.

Uygulamanın diğer kodlarına dokunmadan bunu yapmanın bir yolu var mı? (yani, uygulamada dahili olarak, hala apple ve ApplesController)

:as seçeneğini denedim:

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

Ancak bu yalnızca URL'nin değil "yolunun" adını değiştirdi (new_apple_pathnew_car_path oldu, ama new_car_path hala /cars/new yerine /apples/new değerini gösterir.

cevap

59

:path seçeneğinde geçmesi olduğunu /apples/new yerine /cars/new) işaret

resources :apples, :path => "cars"

Bu /apples

/cars için de Tüm rota referanslar değiştirin: http://guides.rubyonrails.org/routing.html, yardımcı yöntem kısmını yeniden adlandırmak için sadece isteyenler için Çeviri Yolları

+1

Sadece tamlık için, Rails 2.3'de şöyle olurdu: 'kaynaklar: elmalar,: as =>" arabalar "' –

+1

Rails (4) için yeniyim, ancak yalnızca yol yardımcılarını değiştiriyor. Oluşturulan URL'ler değişmez. : yol => "xxx" URL’leri değiştiriyor – luigi7up

1

Bölüm 4.7:

resources :apples, as: "cars" 

Ie Bu, cars_path ile apples_path'un yerini alacak, ancak yine de aynı denetleyiciyi/eylemi kullanacaktır.

İlgili konular