Entiendo cómo convertir :controller
, :action,
:etc
en una URL. Estoy buscando hacer lo contrario, ¿cómo se puede encontrar la acción que llamará el enrutador de los raíles desde la URL?Enrutamiento de raíles inversos: encuentre el nombre de la acción de la URL
14
A
Respuesta
13
otra persona podría tener un camino más corto para hacer esto, pero si usted está evaluando una URL, entonces ir a la clase
ActionController::Routing::RouteSet
para un config.routes.rb
map.resources :sessions
el código para encontrar es :
ActionController::Routing::Routes.recognize_path('/sessions/new', {:method => :get})
#=> {:controller => 'sessions', :action => 'new'}
derecha:
ActionController::Routing::Routes.recognize_path('/sessions/1/edit', {:method => :get})
#=> {:controller => 'sessions', :action => 'edit', :id => 1}
incorrecto - sin la method
que se añade de forma explícita, tomará por omisión partido a /:controller/:action/:id
:
ActionController::Routing::Routes.recognize_path('/sessions/1/edit')
#=> {:controller => 'sessions', :action => '1', :id => 'edit'}
Si está dentro de la acción y le gustaría saber, es un poco más fácil llamando params[:action]
todo lo que siempre quiso saber sobre el juego de rutas se puede encontrar aquí: http://caboo.se/doc//classes/ActionController/Routing/RouteSet.html#M004878
Espero que ayude!
22
con los carriles 3 que puede hacer:
Rails.application.routes.recognize_path('/areas/1')
=> {:controller=>"areas", :action=>"show", :id=>"1"}
Cuestiones relacionadas
- 1. Enrutamiento: ¿Cómo ocultar el nombre de la acción en url?
- 2. raíles alias de enrutamiento
- 3. Nombre de acción diferente de url
- 4. Backbone.js Enrutamiento de URL
- 5. Enrutamiento de raíles - redirección con bloque AND código de estado
- 6. rieles, enrutamiento muchas rutas con nombre a una acción
- 7. URL de enrutamiento en PHP
- 8. Enrutamiento de URL en Java
- 9. Enrutamiento MVC sin controlador en la url
- 10. Obtener la ruta correspondiente de la URL en los raíles (de nuevo)
- 11. Enrutamiento de URL en ASP.net, necesita obtener un parámetro de la url
- 12. Enrutamiento: la solicitud actual de [...] acción es ambigua entre los siguientes métodos de acción
- 13. Ember.js Enrutamiento: coincidencia al final de la url
- 14. Url enrutamiento regex PHP
- 15. Obtener el nombre del método de la acción
- 16. ASP.NET MVC C# Obtener el nombre de la controladora y la acción en la clase
- 17. Reemplazar el listado de directorios con el enrutamiento MVC URL
- 18. encuentre todo el nombre usando la consulta de mysql que comienza con la letra 'a'
- 19. Rieles: nombre de la acción del controlador en la cadena
- 20. asp.net HttpHandler personalizado y enrutamiento de URL
- 21. mod-rewrite eliminar el nombre de la carpeta de url
- 22. cómo analizar el nombre de imagen de la imagen url
- 23. Extraiga el nombre de dominio de la URL en C#
- 24. Enrutamiento de URL tipo Django para PHP
- 25. Cómo ignorar la ruta en los formularios asp.net enrutamiento url
- 26. Propósito de Nombre de acción
- 27. ¿La acción actual es ChildAction?
- 28. web.sitemap con Dynamic URL (URL Enrutamiento)
- 29. Analizar la aplicación de raíles
- 30. Nombre de acción de Symfony en la plantilla
me gusta su idea. ¿Por qué does: route_set.recognize_path (app.edit_foo_path (1)) return: {: controller => "foos",: action => "1",: id => "editar"} Certanly, rails sabe que la acción es editar, y la identificación es 1, no vise-versa? – SooDesuNe
parece coincidir en '/ controller/action/id' en lugar de la ruta RESTful. Probando, pude hacer que funcione correctamente al pasar siempre el método, sin el método, siempre va a los valores predeterminados. También edité la publicación, en su lugar, quiere usar 'ActionController :: Routing :: Routes'. –