Reputation: 83680
I am looking for method for parsing route path like this:
ActionController::Routing.new("post_path").parse
#=> {:controller => "posts", :action => "index"}
It should be opposite to url_for
Upd
I've found out:
What is the opposite of url_for in Rails? A function that takes a path and generates the interpreted route?
ActionController::Routing::Routes.recognize_path("/posts")
So now I need to convert posts_path
into "/posts"
Upvotes: 6
Views: 4166
Reputation: 502
In Rails 3 you can do the following:
Rails.application.routes.recognize_path "/accounts/1"
# {:action=>"show", :controller=>"accounts", :id=>"1"}
Using ActionController::Routing::Routes.recognize_path
kept throwing
ActionController::RoutingError Exception: No route matches "/accounts/1
Upvotes: 12
Reputation: 24174
There's this method:
>> ActionController::Routing::Routes.recognize_path("/posts/")
=> {:action=>"index", :controller=>"posts"}
If you only have a string with your route (like "posts_path"
), then I guess in the context you're using this you should be able to do
ActionController::Routing::Routes.recognize_path(send("posts_path".to_sym))
btw this was educating for me too :)
Upvotes: 5