2010-02-08 9 views
8

Cerebro está un poco frito .... ¿Cómo obtengo un hash del controlador: y la acción de un camino relativo?¿Qué es lo opuesto a url_for en Rails? ¿Una función que toma un camino y genera la ruta interpretada?

Esto es básicamente lo opuesto a url_for. en el ejemplo a continuación, "some_function" es el nombre de la función misteriosa que estoy buscando ... Sé que es fácil, simplemente no puedo recordarlo o parece que puedo encontrarlo en los documentos.

así:

some_function('/posts/1/edit') 
=> {:controller => 'posts', :action => 'edit', :id => '1'} 
+0

son '' controller.action_name' y controlador .controller_name' ¿es suficiente? ¿O realmente necesitas manipular las rutas relativas genéricas desde "afuera" de tu controlador/acción actual? –

+0

Sí ... desafortunadamente. Gracias sin embargo. – btelles

Respuesta

9

Rspec tiene un método 'params_for', que utiliza métodos de enrutamiento acción del controlador de analizar trayectorias con métodos en rutas.

El suyo es un poco más robusto que esto, pero que se reduce a:

def params_for(path, method) 
    params = ActionController::Routing::Routes.recognize_path(path, :method => method) 
end 
+0

Puede obtener una advertencia de desaprobación al usar ActionController :: Routing :: Routes –

+0

Proporcione el enlace de origen para el método 'params_for' – zykadelic

+1

' Rails.application.routes.recognize_path' funciona con Rails 3.2 – zykadelic

8

con los carriles 3 la mejor manera es utilizar

Rails.application.routes.recognize_path('/posts/1/edit') 
+0

¿Qué pasa con Rails 4? –

Cuestiones relacionadas