Вложенный ресурс в Rails3, маршрут не соответствует - PullRequest
1 голос
/ 19 октября 2011

У меня есть вложенный маршрут в рельсах 3, обозначенный как

resources :maps do
    resource :versions
    member do
        post 'share'
        get  'share'            
    end

end

но когда я пытаюсь подключиться к http://localhost:3000/maps/35/versions/2, я получаю

Нет совпадений маршрутов "/ maps / 35 / version / 2"

и в рейковых маршрутах GET /maps/:map_id/versions/:id(.:format) {: controller => "version",: action => "show"} или аналог (с: id) отсутствует другие маршруты с версиями работает правильно

что не так?

РЕДАКТИРОВАТЬ 2: Это полный вывод рейк-маршрутов

maps_public GET    /maps/public(.:format)                 {:controller=>"maps", :action=>"public"}
            map_versions POST   /maps/:map_id/versions(.:format)       {:controller=>"versions", :action=>"create"}
        new_map_versions GET    /maps/:map_id/versions/new(.:format)   {:controller=>"versions", :action=>"new"}
       edit_map_versions GET    /maps/:map_id/versions/edit(.:format)  {:controller=>"versions", :action=>"edit"}
                         GET    /maps/:map_id/versions(.:format)       {:controller=>"versions", :action=>"show"}
                         PUT    /maps/:map_id/versions(.:format)       {:controller=>"versions", :action=>"update"}
                         DELETE /maps/:map_id/versions(.:format)       {:controller=>"versions", :action=>"destroy"}
               share_map POST   /maps/:id/share(.:format)              {:controller=>"maps", :action=>"share"}
                         GET    /maps/:id/share(.:format)              {:controller=>"maps", :action=>"share"}
                    maps GET    /maps(.:format)                        {:controller=>"maps", :action=>"index"}
                         POST   /maps(.:format)                        {:controller=>"maps", :action=>"create"}
                 new_map GET    /maps/new(.:format)                    {:controller=>"maps", :action=>"new"}
                edit_map GET    /maps/:id/edit(.:format)               {:controller=>"maps", :action=>"edit"}
                     map GET    /maps/:id(.:format)                    {:controller=>"maps", :action=>"show"}
                         PUT    /maps/:id(.:format)                    {:controller=>"maps", :action=>"update"}
                         DELETE /maps/:id(.:format)                    {:controller=>"maps", :action=>"destroy"}

Ответы [ 2 ]

3 голосов
/ 19 октября 2011

Должно быть resources :versions. Обратите внимание на пропущенные буквы "s" в вашем случае.

1 голос
/ 19 октября 2011

В дополнение к ответу @ Femaref, вам необходим URL-адрес / maps / 35 / version / 2. Если вам нужен единственный (singleton) ресурс, вы должны сделать:

resources :maps do
  resource :version
end

А затем нажмите / maps / 35 / version (без идентификатора). Что, если у вас есть несколько версий для каждой карты, вы, вероятно, не хотите делать.

...