2010-04-26 10 views

Respuesta

5

Hay este método:

>> ActionController::Routing::Routes.recognize_path("/posts/") 
=> {:action=>"index", :controller=>"posts"} 

Si sólo tiene una cadena con la ruta (como "posts_path"), entonces creo que en el contexto que está usando este debe ser capaz hacer

ActionController::Routing::Routes.recognize_path(send("posts_path".to_sym)) 

por cierto esto estaba educando para mí también :)

+0

ah usted ha hecho la mayor parte del trabajo usted mismo :) –

+1

Thx:) Entonces, ¿qué es 'send (: post_path)'? – fl00r

+0

es como se llaman métodos con un nombre arbitrario en ruby ​​:) en este caso, si tiene una cadena como '" posts_path "', y quiere obtener el valor del método 'posts_path' en su lugar, entonces simplemente' enviar ("posts_path") '(ni siquiera necesita convertirlo en símbolo). es un concepto básico en ruby, es mejor que estés familiarizado con eso :) –

12

En Rails 3 se puede hacer lo siguiente:

Rails.application.routes.recognize_path "/accounts/1" 
# {:action=>"show", :controller=>"accounts", :id=>"1"} 

Uso de ActionController::Routing::Routes.recognize_path mantuvo lanzando

ActionController :: RoutingError Excepción: No hay ninguna ruta "/ cuentas/1

+0

Tenga en cuenta que esto también funciona con URL completos: 'Rails.application.routes.recognize_path 'http: // example.com/accounts/1'' – tee

Cuestiones relacionadas