2011-04-17 20 views
8

He intentado usar la publicación para cambiar las rutas para señalar el nombre de usuario. Sé que esto es simple, pero por alguna razón no puedo calcularlo en este momento. También he intentado todo en la página de documentación del diseño.Cambiar idear ruta desde ID a nombre de usuario

Drawing username routes

Yo sólo quiero tener la disposición rutas a utilizar el nombre de usuario en lugar de ello y no tienen el prefijo usuarios. Al igual que:

http://example.com/username

en lugar de

http://example.com/users/1

Respuesta

7
class User < ActiveRecord::Base 
    def to_param 
    username 
    end 
end 

en su controlador crea

@user = User.find_by_username(params[:id]) 

en lugar de

@user = User.find(params[:id]) 

esto hará que sus rutas como http://example.com/users/username

para hacer lo que quiere, se puede hacer la ruta como:

resources :users, :path => '' do 
    # nested resources... 
end 

así, user_path (@user) hará url http://example.com/username pero no es una buena práctica, porque no es un RESTO. Te aconsejo que dejes urls como http://example.com/users/username

+0

obtengo este resultado, las rutas apuntan al nombre de usuario ahora y ajusté el UserController # show con find_by_username, pero sigo obteniendo - Couldn't Find User with ID = DanReynolds –

+0

if el error es exacto "No se pudo encontrar el usuario con ID = DanReynolds", que tratar de volver a cargar el servidor o algo así, porque find_by_username no genera el error NotFound, solo plantea la evaluación de un error nulo. o puede probar algo como @user = User.where (: username => params [: id]). Primero – sandrew

+0

¿cómo configuraría sus rutas si usa recursos en lugar de hacer coincidir cada ruta? – rugbert

Cuestiones relacionadas