Path parsing in rails

我的未来我决定 提交于 2019-12-01 04:12:00

问题


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"


回答1:


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 :)




回答2:


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



来源:https://stackoverflow.com/questions/2714867/path-parsing-in-rails

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!