У меня есть волосатый набор маршрутов, которые я обновляю с Rails 2 до Rails 3. В Rails 2 файл маршрутов был написан так:
map.resources :stories, :path_prefix => ':user_id', :name_prefix => 'user_', :controller => :user_stories, :do |story|
story.resources :article_clips
end
И это произвело этот набор маршрутов:
user_story_article_clips GET /:user_id/stories/:story_id/article_clips(.:format) {:controller=>"article_clips", :action=>"index"}
POST /:user_id/stories/:story_id/article_clips(.:format) {:controller=>"article_clips", :action=>"create"}
new_user_story_article_clip GET /:user_id/stories/:story_id/article_clips/new(.:format) {:controller=>"article_clips", :action=>"new"}
edit_user_story_article_clip GET /:user_id/stories/:story_id/article_clips/:id/edit(.:format) {:controller=>"article_clips", :action=>"edit"}
user_story_article_clip GET /:user_id/stories/:story_id/article_clips/:id(.:format) {:controller=>"article_clips", :action=>"show"}
PUT /:user_id/stories/:story_id/article_clips/:id(.:format) {:controller=>"article_clips", :action=>"update"}
DELETE /:user_id/stories/:story_id/article_clips/:id(.:format) {:controller=>"article_clips", :action=>"destroy"}
Обратите внимание, что пример URL содержит: : story_id] '...
Так что мне удалось перевести это с некоторым успехом, вот что я до сих пор:
scope ":user_id" do
resources :stories, :as => 'user_story', :controller => :user_stories do
resources :article_clips
end
end
Это все хорошо, кроме использования ': as', обратите внимание, как объект, который помещается в хэш params, был переименован в ': user_story_id':
user_story_article_clips GET /:user_id/stories/:user_story_id/article_clips(.:format) {:action=>"index", :controller=>"article_clips"}
POST /:user_id/stories/:user_story_id/article_clips(.:format) {:action=>"create", :controller=>"article_clips"}
new_user_story_article_clip GET /:user_id/stories/:user_story_id/article_clips/new(.:format) {:action=>"new", :controller=>"article_clips"}
edit_user_story_article_clip GET /:user_id/stories/:user_story_id/article_clips/:id/edit(.:format) {:action=>"edit", :controller=>"article_clips"}
user_story_article_clip GET /:user_id/stories/:user_story_id/article_clips/:id(.:format) {:action=>"show", :controller=>"article_clips"}
PUT /:user_id/stories/:user_story_id/article_clips/:id(.:format) {:action=>"update", :controller=>"article_clips"}
DELETE /:user_id/stories/:user_story_id/article_clips/:id(.:format) {:action=>"destroy", :controller=>"article_clips"}
Я пробовал много разных вещей, ': name_prefix' вообще не работает, эта вещь:: path_prefix 'также больше не работает. Как я могу сделать это? Я собираюсь написать эти маршруты вручную с помощью операторов «match»?
Большое спасибо за вашу помощь.