Qual è l'opposto di url_for in Rails? Una funzione che prende un percorso e genera il percorso interpretato?
-
19-09-2019 - |
Domanda
Il cervello di un po 'di fritto .... Come faccio ad avere un hash del: controller e:? L'azione da un RELATIVE_PATH
Questo è fondamentalmente l'opposto di url_for. nell'esempio che segue, "una_qualche_funzione" è il nome della funzione mistero che sto cercando ... Lo so che è facile, basta non ricordo o sembrano essere in grado di trovare nella documentazione.
In questo modo:
some_function('/posts/1/edit')
=> {:controller => 'posts', :action => 'edit', :id => '1'}
Soluzione
Rspec ha un metodo 'params_for', che utilizza metodi di instradamento di azione di controllo per analizzare i percorsi con i metodi in percorsi.
Il loro è un po 'più robusto di questo, ma si riduce a:
def params_for(path, method)
params = ActionController::Routing::Routes.recognize_path(path, :method => method)
end
Altri suggerimenti
Con Rails 3 il modo migliore è quello di utilizzare
Rails.application.routes.recognize_path('/posts/1/edit')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow