Управление URI и навигация в Ruby on Rails - PullRequest
0 голосов
/ 22 февраля 2011

Я бы хотел реализовать специальную маршрутизацию в rails на основе URI (я использую rails 3.0.4 с Mongoid и devise). Допустим, мои логины пользователей, после входа я хочу перенаправить его в личную область, например http://www.mysite.com/site1. Многие пользователи могут принадлежать site1, многие - site2 ... пользователи одного сайта не авторизованы для просмотра другого сайта. Сегодня перенаправление в порядке после входа в систему, но я не совсем понимаю, как мне реализовать siteX (у каждого сайта свои данные). У меня есть следующий маршрут:

match '/:site_name' => 'site#index', :constraints => { :site_name => /'a pattern'/ }
  resources :sites do
end

Поскольку мне нужно придерживаться этого формата URI, я должен вложить все свои другие ресурсы в: сайты? Например, если я хочу отобразить порядок 1 для сайта 2, URL должен выглядеть следующим образом: http://www.mysite.com/site2/order/1. Я не могу поместить имя ресурса «сайты» в URI, так как он начинается непосредственно с идентификатора. Есть ли другой способ сделать это, какие будут лучшие практики? Надеюсь, мои объяснения имеют смысл.

Большое спасибо за вашу помощь! Тед

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Я рекомендую вам отказаться от идеи "подкаталогов".У вас будут (не непреодолимые) трудности с link_to и другими помощниками.

Я бы настроил субдомены (а-ля site1.mysite.com), если это возможно для вашей ситуации

0 голосов
/ 27 февраля 2011

Выполнение url.com/site_name является чем-то вроде орехов.

Если к сайту может принадлежать только один пользователь, возьмите его с точки зрения пользователя и используйте resource, а не resources.

Например, url.com/orders будет все current_user.orders, так как current_user имеет сайт (или является участником одного сайта).

Если вам нужна навигация, специфичная для сайта, тогда используйте /site_name для сайтадеталь, которая является публичной по своей природе.Например, url.com/site_name/pricing

Если вы действительно хотите разбить свой сайт на /site_name определенные маршруты, то через это в поддомен.Вы даже можете попробовать sudomain devise , чтобы начать работу.

...