Как дать разное представление для каждого пользователя в Rails 3?

Итак, у меня есть таблица users, и каждая запись имеет поле username.

и у меня есть корень для контроллера main и действие `index

root :to => 'pages#main'

поэтому, если перейти к http://mydomain.com, он покажет мою страницу main#index, и у меня также есть страницы about и contact.

но если я перехожу к http://mydomain.com/Mr_Nizzle, он показывает мне страницу пользователя Mr_Nizzle, которая находится на users#show (как в примере), а также для других пользователей, чтобы показать страницу каждого пользователя...

это правильно, если я пойду =>

match ':username' => 'users#show'

match 'contact_us' => 'main#contact'

match 'about' => 'main#about'

root :to => 'pages#main'

так что я могу оставить всю логику на маршруте, а не в главном контроллере?

Спасибо.


person Mr_Nizzle    schedule 14.07.2011    source источник


Ответы (1)


Я не совсем понимаю, о чем вы спрашиваете, однако это может помочь. Я думаю (по крайней мере, для about и contact) правильный синтаксис match '/contact_us' => 'main#contact (то же самое для about, но замените контакт на about), правильный root :to => 'pages#main' (это то же самое, что и совпадение '/' => 'pages#main')

Что вы спрашиваете о match ':username' => 'users#show'? Вы хотите, например, чтобы URL-адрес был http://mydomain.com/users_username? Где users_username — это имя профиля пользователя, к которому он переходит? Если это так, я думаю, вы можете сделать что-то вроде match '/:username' => 'users#show', но я не совсем уверен.

Сообщите мне, что работает, а что нет

person Vasseurth    schedule 14.07.2011
comment
Ну да, дело с users_username было именно тем, что я пытался сделать, просто мне пришлось перевернуть мои маршруты с ног на голову для приоритета about и contact_us, иначе они будут восприниматься как :username - person Mr_Nizzle; 16.07.2011