Как настроить github.com как имя пользователя в URL? - PullRequest
2 голосов
/ 26 января 2010

Я видел, гуглил и нашел много симпатичных URL-ссылок.

Но все они выглядят как http://example.com/users/username

Я хочу, чтобы это было похоже на стиль github http://example.com/username

Любые указания, которым я могу следовать ??

Ответы [ 3 ]

2 голосов
/ 26 января 2010

Что не так с http://example.com/users/username? Проблема с использованием http://example.com/username заключается в том, что кто-то может очень легко зарегистрировать имя пользователя admin или faq, которое может конфликтовать с другими вашими маршрутами. Вам нужно будет сохранить список запрещенных имен пользователей, а также вам нужно проверить, существует ли пользователь с данным именем, прежде чем создавать новый маршрут, так как это может конфликтовать с существующим пользователем.

Вы всегда можете сократить его до: http://example.com/u/username.

Однако, если вы должны сделать это, вы можете использовать map.connect, как предлагали другие, но вы должны определенно подумать о плюсах и минусах и о том, добавляет ли это какую-либо значительную ценность.

1 голос
/ 26 января 2010

Очень простой пример может быть таким:

  • объявляет маршрут с самым низким приоритетом, указывающий на действие show вашего контроллера пользователя
  • изменить действие show, чтобы найти записи на основе имени пользователя

В config/routes.rb:

map.username '/:username', :controller => :users, :action => :show

В UsersController:

def show
  @name = Name.find_by_name(params[:username]) || Name.find(params[:id])
end

Затем вы можете использовать username_path(:username => user.name) для генерации ссылок.

0 голосов
/ 26 января 2010

Разве вам не нужно просто сбросить users/ на маршрутах?

map.connect '/:username',... вместо map.connect '/users/:username',...

...