Я хочу, чтобы это сделать:Изменить рельсы маршрут для отображения usersname вместо идентификатора
site.com/username
вместо этого:
site.com/users/1
Каков наилучший способ настройки маршрутов и пользовательского контроллера?
Я хочу, чтобы это сделать:Изменить рельсы маршрут для отображения usersname вместо идентификатора
site.com/username
вместо этого:
site.com/users/1
Каков наилучший способ настройки маршрутов и пользовательского контроллера?
Я предполагаю, что это запрос GET. Так было бы, как:
определения маршрута
get '/:username', to: 'users#show', as: 'user_by_name'
использований:
link_to 'Show', user_by_name_path(user.username)
user
в user.username
следует заменить фактической переменной.
Подробнее в Non Resourceful Routes в официальном руководстве.
Если вы хотите отменить это от ресурса users
, вы можете полюбить эту тему https://stackoverflow.com/a/18261912/383912. Вам нужно использовать 'member' вместо 'collection' для маршрута show
.
Вы можете установить путь, чтобы быть на маршруте:
resources :users, path: '', only: [ :show, :edit, :update, :destroy ]
Вы можете оставить из :only
, если вы хотите индексную страницу и создать действие для пользователей для сопоставления /
.
Отъезд friendly_id
для удобства использования имени пользователя в качестве идентификатора в маршруте.
Убедитесь, что вы указали другие маршруты, например /about
, перед тем как маршрут пользователя или они будут интерпретированы как идентификаторы пользователей.
Что-то вы можете посмотреть по адресу: How to create app-wide slug routing for Rails app?
Если вы собираетесь быть маршрутизации domain.com/:username
& другие типы контента, вам нужен способ, чтобы обработать их все без конфликтов.
+1, should 'get '/: username'' вместо этого' '/ users /: username'' OP хочет url, как этот' site.com/username' –
oh да, спасибо за указание. Я предполагаю, что он знает о побочных эффектах этих. – HungryCoder