Я хочу, чтобы у пользователей к способному была страница профиля по site.com/myNameHere. Направляющие ищут контроллер, названный "myNameHere". Действительно ли возможно установить routes.rb так, чтобы, если контроллер не найден, "myNameHere" был отправлен в качестве параметра на другой контроллер?
Вы можете добавить следующий маршрут, как это:
map.profile_link '/:username', :controller => 'profiles', :action => 'show'
Обязательно добавьте его достаточно низкое в файле, ниже ваших ресурсов, что он не вмешивается в другие маршруты. Это должно быть наименьшем приоритетом. Далее необходимо изменить свое показать действие, чтобы использовать имя пользователя вместо ID:
def show
@user = User.find_by_username(params[:username])
end
Это все, что есть к нему. Счастливое кодирование!
Обновление:
Я расширил этот ответ в полный пост блога, URL тщеславия в Ruby на направляющих маршрутах . У меня есть дополнительные образцы кода и более тщательное объяснение.