2012-02-16 4 views
0

をrails3するrails2異なる振る舞いLINK_TO、私はこのようなコードを持っていることができました:はrails2で

にマップする
link_to(user.company.name, user.company) 

/companies/id 

が、レール3で、これと同じライン

undefined method `user_companies_path' 

明白な修正はのような何かを行うことです:コードが示すエラーがスローされます

link_to(user.company.name, company_path(user.company)) 

誰かが変更の理由を説明できるかどうか疑問に思っていましたか?ロジックははるかにクリーンなようだ。

EDIT:rails2で私のルートのサンプル

の追加、私のルートはのように見えた:rails3で

map.resources :users, :except => :edit, :member => { :details => :get } 
map.resources :companies, :except => :edit, :member => { :details => :get } 

、私のルートは次のとおり

resources :users, :except => :edit do 
    member do 
    get :details 
    end 
end 

resources :companies, :except => :edit do 
    member do 
    get :details 
    end 
end 

答えて

0

短い答えはRails 3ルーティングAPIはアプリケーションに基づいてRESTfulなルートが使用されているリソースであることを保証します。また、それはsupポートの制約。 Railsの2で

、あなたがしたい:Railsの3で

resources :cars do 
    resource :models 

    member do 
    post :year 
    end 

    collection do 
    get :details 
    end 
end 

を、あなたがしたい:

map.resources :cars, :member => {:year => :post}, :collection => {:details => :get} do |cars| 
    cars.resource :model 
end 

また、あなたはその後、という名前を使用できることを意味可能な:asキーを持っています(コントローラ、メーラなど)

+0

私のレール2アプリでは、私もリソース(いずれも入れ子になっていませんでした)を使用していました。元の質問を自分のルートのスニペットで更新しました – gmoniey

関連する問題