在rails中解析的路径

fl0*_*00r 5 ruby routing parsing ruby-on-rails

我正在寻找解析路径路径的方法,如下所示:

ActionController::Routing.new("post_path").parse
#=> {:controller => "posts", :action => "index"}
Run Code Online (Sandbox Code Playgroud)

它应该是相反的 url_for

UPD
我发现了: 什么是url_for在Rails的相反?获取路径并生成解释路线的函数?

ActionController::Routing::Routes.recognize_path("/posts")
Run Code Online (Sandbox Code Playgroud)

所以现在我需要转换posts_path成"/ posts"

小智 12

在Rails 3中,您可以执行以下操作:

Rails.application.routes.recognize_path "/accounts/1"
# {:action=>"show", :controller=>"accounts", :id=>"1"}
Run Code Online (Sandbox Code Playgroud)

使用ActionController::Routing::Routes.recognize_path保持投掷

ActionController :: RoutingError异常:没有路由匹配"/ accounts/1


ale*_*dev 5

有这种方法:

>> ActionController::Routing::Routes.recognize_path("/posts/")
=> {:action=>"index", :controller=>"posts"}
Run Code Online (Sandbox Code Playgroud)

如果你的路线上只有一个字符串(比如"posts_path"),那么我猜你在使用它的上下文中应该可以做到

ActionController::Routing::Routes.recognize_path(send("posts_path".to_sym))
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这也是为我教育:)