В версии моего приложения rails 2 я определил этот ресурс
map.resources :albums, :as => 'music', :has_many => :reviews
Это дало мне несколько стандартных маршрутов:
album GET /music/:id(.:format) {:controller=>"albums", :action=>"show"}
new_album GET /music/new(.:format) {:controller=>"albums", :action=>"new"}
У меня также есть полиморфная ассоциация, настроенная какследующим образом:
class Album < ActiveRecord::Base
has_many :reviews, :as => :reviewable
end
class Review < ActiveRecord::Base
belongs_to :reviewable, :polymorphic => true
end
Это означало, что я мог создать ссылку на ресурс моего альбома через мой обзор, используя полиморфный путь
<%= review.reviewable.title, polymorphic_path(review.reviewable) %>
Однако после обновления до рельсов 3 я изменилсямой файл маршрутов, чтобы соответствовать новому маршрутизатору:
resources :music, :controller => 'albums' do
resources :reviews
end
И хотя он чище, он ломает мою полиморфную ссылку, то есть
<%= review.reviewable.title, polymorphic_path(review.reviewable) %>
Я получаю следующее сообщение об ошибке
undefined method `album_path'
Если я посмотрю в моих рельсах 3 сгенерированных маршрута с "рейковыми маршрутами", я вижу
music GET /music/:id(.:format) {:action=>"show", :controller=>"albums"}
, что отличается от того, что было раньше в рельсах 2, то есть
album GET /music/:id(.:format) {:controller=>"albums", :action=>"show"}
Так что я думаю, что это то, что ломает вещи.
Я немного не уверен в том, как исправить это, не возвращаясь к рельсам. 2 маршрута, которые будут амортизироваться с помощью рельсов 3.1.Любая помощь будет оценена.Спасибо.