2015-09-23 3 views
0

Я работаю над сайтом социальных сетей, и у меня проблемы с маршрутизацией.Маршрутизация на страницу профиля по имени пользователя

Каждый пользователь имеет страницу профиля, как Facebook и это корень я использую:

get 'profile(/:id)' => 'profiles#show' 

Таким образом, когда URL выглядит так: www.sitename.com/profile/1 он открывает страницу принадлежит пользователю с идентификатором 1. Но я также хочу, чтобы пользователи могли использовать свои имена пользователей в URL-адресе без/profile /. Так что это будет похоже на facebook.

Например: www.sitename.com/handsomeboy69

Как я могу сделать это в маршрутизации? Потому что, рельсы могут думать, что имя пользователя, переданное по URL-адресу, является именем страницы.

Спасибо

+0

Возможный дубликат [имя пользователя в URL-адресе с маршрутами рельсов] (http://stackoverflow.com/questions/2269885/username-in-url-with-rails-routes) –

ответ

0

Я установил его. Это маршрут я использовал:

get ':username' => 'profiles#show' 

В контроллере я использовал это утверждение:

if params.has_key?(:username) 
    @profile = User.find_by_username(params[:username]) 
elsif params.has_key?(:id) 
    @profile = User.find(params[:id]) 
else 

end 

другое заявление в конце пусто, я буду использовать этот район, чтобы напечатать сообщение об ошибке о том, что профиль не найден.

и наиболее важной частью является то, что эта маршрутизация должна быть в конце файла.

+1

Вы также можете рассмотреть возможность использования friendly_id gem , https://github.com/norman/friendly_id – moeabdol

Смежные вопросы