O que é o oposto do url_for em Rails? Uma função que recebe o caminho e gera a rota interpretado?
-
19-09-2019 - |
Pergunta
O cérebro de um pouco frito .... Como faço para obter um hash do: controlador e: ação de um RELATIVE_PATH
Este é basicamente o oposto do url_for. no exemplo abaixo, "some_function" é o nome da função mistério que estou procurando ... Eu sei que é fácil, só não consigo lembrar ou parecem ser capazes de encontrá-lo na documentação.
Assim:
some_function('/posts/1/edit')
=> {:controller => 'posts', :action => 'edit', :id => '1'}
Solução
Rspec tem um método 'params_for', que usa métodos de roteamento de ação do controlador para analisar caminhos com métodos em rotas.
O deles é um pouco mais robusto do que isso, mas tudo se resume a:
def params_for(path, method)
params = ActionController::Routing::Routes.recognize_path(path, :method => method)
end
Outras dicas
Com Rails 3 a melhor maneira é usar
Rails.application.routes.recognize_path('/posts/1/edit')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow