views:

125

answers:

2

Hi there,

Brain's a little fried....How do I get a hash of the :controller and :action from a relative_path?

This is basically the opposite of url_for. in the example below, "some_function" is the mystery function name I'm looking for...I know it's easy, just can't remember or seem to be able to find it in the docs.

Like so:

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

Are controller.action_name and controller.controller_name sufficient? Or do you really need to manipulate generic relative paths from "outside" your current controller/action?

Martin Carpenter
I do...unfortunately. Thanks though.
btelles
+5  A: 

Rspec has a method 'params_for', which uses Action Controller's Routing Methods to parse paths with methods into routes.

Theirs is a little more robust than this, but it boils down to:

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