ruby-on-rails - restful - rutas en ruby on rails
Consolidar rutas desordenadas en Rails 4. ¿Cómo organizar rutas para no apuntar urls a enlaces estáticos? (0)
Aquí viene una cuestión organizativa de carriles:
Lo que existe:
Un enlace "Railsy" se vería algo así (en delgado)
span
a href= signout_path
signout_path
corresponde a AuthController#signout
.
Entonces, en mis aplicaciones hay varios tipos de usuarios: bomberos, jefes y capitanes.
Cada uno tiene rutas muy similares:
/dashboard
/dashboard/:date
( this is in case they want to see a previous date;
same dashboard, different data in the controller )
/account
/account/update
/entry/view
/entry/edit
Las entradas pueden o no pertenecer a un usuario. Porque las entradas deben estar visibles para cualquier usuario (aunque no sean acciones relevantes)
Eche un vistazo a mi repugnante desorden de rutas:
scope :firefighters do
get ''/dashboard'' => ''firefighters#dashboard''
get ''/dashboard/:date'' => ''firefighters#dashboard''
get ''/account'' => ''account#account''
post ''/account/update'' => ''firefighters#account_update''
get ''/account/change_password'' => ''account#change_password''
get ''/account/change_cell'' => ''account#change_cell''
get ''/account/change_email'' => ''account#change_email''
get ''/account/change_notifications'' => ''account#change_notifications''
post ''/account/update_cell'' => ''account#update_cell''
# post ''/account/update_pass'' => ''account#update_pass''
# post ''/account/update_cell'' => ''account#update_cell''
# post ''/account/update_email'' => ''account#update_email''
# post ''/account/update_notifications'' => ''account#update_notifications''
# get ''/account/change_cell_number'' => ''firefighters#account_change_cell_number''
# post ''/account/request_cell_change'' => ''firefighters#account_request_cell_change''
# post ''/account/update_cell'' => ''firefighters#account_update_cell''
# get ''/account/change_password'' => ''firefighters#account_change_pass''
# post ''/account/update_password'' => ''firefighters#account_update_pass''
# get ''/account/change_email'' => ''firefighters#account_change_email''
# post ''/account/request_email_change'' => ''firefighters#account_request_email_change''
# post ''/account/update_email'' => ''firefighters#account_update_email''
get ''/approve'' => ''firefighters#approve''
get ''/set_tester'' => ''firefighters#set_tester''
end
scope :entries do
post ''/verify'' => ''entries#verify''
post ''/approve'' => ''entries#approve''
post ''/finalize'' => ''entries#finalize''
post ''/comment'' => ''entries#comment''
post ''/update'' => ''entries#update''
get ''/edit/:entry_id'' => ''entries#edit''
end
Usé el scope
para evitar escribir un millón de rutas. Entry
rutas de Entry
en resources :entries
por este motivo.
Actualmente, cada tipo de usuario tiene su propia página de tablero con ligeras variaciones, solo para que funcione
En este momento hay un dashboard.slim
separado. dashboard.slim
, account.slim
, etc. para Bomberos, Jefes, lo obtienes.
Cómo me gustaría que las cosas fueran
Me gustaría tener un tablero para gobernarlos a todos. Sin embargo, los enlaces como firefighters_dashboard_path
no son terriblemente útiles si solo tienes un archivo de vista. Resuelvo este problema teniendo una página de tablero ligeramente diferente para cada usuario. Esto parece incorrecto y para nada SECO.
¿Cómo organizo las rutas para que haya un tablero y, dependiendo del usuario, los enlaces como account_path
llevan a uno a la cuenta del bombero y no a la cuenta de un administrador, por ejemplo?
En otras palabras, inicio sesión como capitán, el enlace a mi cuenta debe ser site.com/account
. Ingreso como administrador, mi enlace a la administración debe ser ''site.com/managing''. Salvar "identidad" en sesión es una locura.
Esto es un poco para asimilar, disculpas por el muro de texto pero la ayuda sería muy apreciada.