Предлагаемые вами маршруты работают отлично.Тем не менее, вам нужно следить за действиями контроллера Photos.Поскольку их можно вызывать для отдельной фотографии или коллекции, вам необходимо условно найти фотографии, основываясь на доступных параметрах.
Кроме того, я бы предложил более конкретно указать, какие действия доступны для каждого маршрута:
resources :photos
resources :collections do
resources :photos, :only => [:index, :create, :destroy]
end
# index => show photos in a collection
# create => add a photo to a collection
# destroy => remove a photo from a collection
На самом деле вам не нужно иметь возможность редактировать / обновлять / показывать фотографию в качестве члена коллекции на основе предоставленной вами информации.
Другой вариант - использоватьмаршрут в пространстве имен:
namespace :collection, :path => '/collection', :as => :collection do
resources :photos, :only => [:index, :create, :destroy]
end
Это позволит вам отделить вашу коллекцию :: Фотографии от ваших фотографий…
controllers/photos_controller.rb
controllers/collections/photos_controller.rb
И если вы действительно хотите, Rails позволяет вам делать то же самоеПросмотры.Еще одно преимущество использования пространства имен заключается в том, что оно настраивает действительно изящных помощников маршрута:
photo_path(@photo) #=> /photos/1
collection_photos_path #=> /collections/1/photos
etc.