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'}
Foi útil?

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
scroll top