Rails 3 проблема с нестандартным именованным маршрутом после обновления с rails 2 - PullRequest
0 голосов
/ 26 ноября 2010

В версии моего приложения 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.Любая помощь будет оценена.Спасибо.

1 Ответ

2 голосов
/ 27 ноября 2010

Оказывается, это было легко исправить.Все, что мне нужно было сделать, это:

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