2011-02-16 7 views
27

私はモデルがAppleと呼ばれ、それがコントローラApplesControllerを持って、ルートがあるしていることを与える:私はURLでことを除いて、「りんご」は置換される、同じすべてのコードを維持したいと思いますURLでRESTルートの名前を変更するにはどうすればよいですか?

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

車で"。したがって、URL /apples/new/cars/newになります。

アプリで他のコードに触れていない間にこれを行う方法はありますか?私は:asオプションを試みた

(つまり内部アプリで、それはappleまだだとApplesController):のみ、ルートのないURLを「名前」に変更することを

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

をしかし、(そうnew_apple_pathは、new_car_pathになりましたしかし、あなたがやりたいだろう何new_car_pathまだ/apples/new代わりの/cars/newを指す)

答えて

59

:pathオプション

に渡しています210

resources :apples, :path => "cars"

この/apples

/carsへの参照を持つ、すべてのルートの参照を置き換える: http://guides.rubyonrails.org/routing.html、唯一のヘルパーメソッドの一部の名前を変更しようとしている人のために、セクション4.7を翻訳パス

+1

Rails 2.3では、 'resources:apples、:as" = "" cars "' –

+1

です。私はRails(4)を初めて使っていますが、ルートヘルパーだけを変更します。生成されたURLは変更されません。 :path => "xxx"はURLを変更します – luigi7up

1

resources :apples, as: "cars" 

これはapples_pathcars_pathに置き換えますが、引き続き同じコントローラ/アクションを使用します。