2013-10-12 1 views

ответ

4

Я предполагаю, что это запрос 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.

+0

+1, should 'get '/: username'' вместо этого' '/ users /: username'' OP хочет url, как этот' site.com/username' –

+0

oh да, спасибо за указание. Я предполагаю, что он знает о побочных эффектах этих. – HungryCoder

2

Вы можете установить путь, чтобы быть на маршруте:

resources :users, path: '', only: [ :show, :edit, :update, :destroy ] 

Вы можете оставить из :only, если вы хотите индексную страницу и создать действие для пользователей для сопоставления /.

Отъезд friendly_id для удобства использования имени пользователя в качестве идентификатора в маршруте.

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

1

Что-то вы можете посмотреть по адресу: How to create app-wide slug routing for Rails app?

Если вы собираетесь быть маршрутизации domain.com/:username & другие типы контента, вам нужен способ, чтобы обработать их все без конфликтов.

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