2010-11-26 23 views
0

Dans les rails 2 version de mon application j'ai cette ressource définieRails 3 problème avec personnalisé nommé itinéraire de ressources après la mise à jour des rails 2

map.resources :albums, :as => 'music', :has_many => :reviews 

Cela m'a donné quelques itinéraires standard:

album GET /music/:id(.:format) {:controller=>"albums", :action=>"show"} 
new_album GET /music/new(.:format) {:controller=>"albums", :action=>"new"} 

J'ai également une association polymorphique mis en place comme suit:

class Album < ActiveRecord::Base 
    has_many :reviews, :as => :reviewable 
end 


class Review < ActiveRecord::Base 
    belongs_to :reviewable, :polymorphic => true 
end 

Cela signifiait que je pouvais créer un lin k à ma ressource de l'album grâce à mon examen en utilisant un chemin polymorphes

<%= review.reviewable.title, polymorphic_path(review.reviewable) %> 

Cependant, depuis la mise à niveau des rails 3 J'ai changé mes itinéraires fichier à afin de se conformer au nouveau routeur:

resources :music, :controller => 'albums' do 
    resources :reviews 
end 

Et bien plus propre, il brise le lien polymorphes, à savoir

<%= review.reviewable.title, polymorphic_path(review.reviewable) %> 

Je termine avec le message d'erreur suivant

undefined method `album_path' 

Si je regarde dans mes rails 3 itinéraires générés avec "routes râteau" je vois

music GET /music/:id(.:format) {:action=>"show", :controller=>"albums"} 

qui est différent de ce qui était là avant dans les rails 2, à savoir

album GET /music/:id(.:format) {:controller=>"albums", :action=>"show"} 

Alors Je suppose que c'est ce qui brise les choses.

Je suis un peu incertain cependant quant à la façon de le réparer sans revenir aux rails 2 routes qui seront dépréciées avec des rails 3.1. Toute aide serait appréciée. Merci.

Répondre

2

Il s'est avéré que c'était facile à réparer. Tout ce que j'avais à faire était:

resources :albums, :path => 'music' do 
    resources :reviews 
end