zoonman
@zoonman
⋆⋆⋆⋆⋆

Как правильно сделать роутинг в Rails?

Задача немного тривиальная, но пока Ruby & Rails я плохо знаю.

В общем планируется сайт фотостудий. Внутри каждой есть фотографии и, возможно, разделы.
Планируется следующий ЧПУ
/:company/:photo/
или
/:company/:category/:photo

Понимаю, что нужно как-то скомпоновать вложенные ресурсы и сегменты.

Плюс нужно как-то уложить это все в то, что фотографии загружают фотографы, которые могут работать с несколькими студиями (то, чего я совсем не ожидал). Получается, что зайдя внутрь студии, они могут загрузить фото сразу в эту студию без лишних вопросов. Я думаю, это можно как-то сделать используя 2 разных правила.

И теперь самый неприятный момент - у компаний и категорий 100% могут быть человеческие псевдонимы и тут кроется загвоздка - как совместить id & alias. Единственное - создание constraint'а, который будет понимать, что переданы только цифры и это можно считать id, а если буквы, то псевдоним.
Непонятно только как будет работать такое /ooo-romashka/23/17.

Начало я себе так представляю
get '/:id', to: 'company#show', constraints: { id: /^\d.+$/ }
get '/:alias', to: 'company#show'

Но ведь это read-only. Как сделать полноценный RESTfull?
  • Вопрос задан
  • 2465 просмотров
Пригласить эксперта
Ответы на вопрос 2
viktorvsk
@viktorvsk
resources :company do
member do
# /company/50/:photos
resources :photos
end
collection do
get :category, to: "category#index"
end
end


Полноценный рестфулл - это ресурсы. А в ресурсы можно вкладывать мембер (то, что вешается на конкретный ресурс) и коллекецию (то, что на весь ресурс). Что имеется ввиду под категориям, не совсем понял, поэтому пример абстрактный.
Ответ написан
@vsuhachev
Если /:company/:photo/ и /:company/:category/:photo будут ссылаться на одну и ту же фотографию, это уже не рестфул. Да и поисковые системы не рекомендуют отдавать одну страницу по разным урлам

Я бы на вашем месте сделал как-то так:

/studies/ooo-romashka
/studies/ooo-romashka/categories/svadebnaya-siemka
/studies/ooo-romashka/photos/155
/studies/ooo-romashka/photos/?category=svadebnaya-siemka
/authors/ivanov-ivan-ivanovich/photos/?category=svadebnaya-siemka

Для псевдонимов поглядите этот гем, возможно он вам подойдет
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы