我知道Rails应用程序中的文件routes.rb将URL映射到控制器,方法和参数组中的一组参数。 “资源”,嵌套资源和非RESTful路由有点复杂。Ruby on Rails - 将URL映射到控制器,方法和参数
有没有办法在rails控制台上运行一个命令来映射一个URL,并确定哪个控制器,哪个方法,哪个http方法以及参数哈希值的给定URL的确切值?
然后是否可以在rails控制台上使用参数hash运行控制器方法,并获取发送到STDOUT的控制器的输出?如果是这样,怎么样?
我知道Rails应用程序中的文件routes.rb将URL映射到控制器,方法和参数组中的一组参数。 “资源”,嵌套资源和非RESTful路由有点复杂。Ruby on Rails - 将URL映射到控制器,方法和参数
有没有办法在rails控制台上运行一个命令来映射一个URL,并确定哪个控制器,哪个方法,哪个http方法以及参数哈希值的给定URL的确切值?
然后是否可以在rails控制台上使用参数hash运行控制器方法,并获取发送到STDOUT的控制器的输出?如果是这样,怎么样?
尝试与运行
bundle exec rake routes
见Determine if path exists as route in Rails controller
Rails.application.routes.recognize_path
尝试这些
Rails.application.routes.named_routes.each{|p,s| puts p,s}
Rails.application.routes.url_helpers.my_path_helper # To get url for a path helper
或
route = Rails.application.routes
route.recognize_path "/poweruser/3" # will give you result exactly you wanted
第二个是一个正确的答案但我有时会得到一个错误(RuntimeError路径集未定稿),此页在http://stackoverflow.com/ questions/9291366/runtimeerror-route-set-not-finalized-when-calling-rails-application-routes-ge表明这种技术对于Rails 3来说并不好。另外......这种技术不适用于只有路由使用HTTP POST。 –
我通常使用第一个命令来过滤和查找路由,他们的帮手等。 –
我知道这件事。我所寻找的是特别的东西。例如,如果我可以运行诸如“route'/ poweruser/3'”这样的命令,它可能会给我一些像“{:controller =>”poweruser,:params => {:id => 3}}“返回值(散列哈希) –
更新了我的文章... – Lichtamberg