1

Rails 3にネストされたルートがあり、次のようにマッピングされています

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

end

しかし、 http://localhost:3000/maps/35/versions/2に接続しようとすると、取得します

「/maps/35/versions/2」に一致するルートはありません

および rake ルートで GET /maps/:map_id/versions/:id(.:format) {:controller=>"versions", :action="show"} または同様の (:id を使用) には、バージョンを持つ他のルートがありません正しく動作します

どうしたの?

編集 2: これは完全な rake ルートの出力です

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"}
4

2 に答える 2

3

でなければなりませんresources :versions。あなたの場合、欠落している「s」に注意してください。

于 2011-10-18T21:23:20.290 に答える
1

@Femaref の回答に加えて、アクセスする必要がある URL は /maps/35/versions/2 です。単数 (シングルトン) リソースが必要な場合は、次のようにします。

resources :maps do
  resource :version
end

次に、/maps/35/version にアクセスします (ID は必要ありません)。各マップに複数のバージョンがある場合は、おそらくやりたくないでしょう。

于 2011-10-19T01:13:09.563 に答える