rutas restful rails ruby-on-rails ruby routing code-organization

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.