2012-11-27 70 views
1

我知道Rails应用程序中的文件routes.rb将URL映射到控制器,方法和参数组中的一组参数。 “资源”,嵌套资源和非RESTful路由有点复杂。Ruby on Rails - 将URL映射到控制器,方法和参数

有没有办法在rails控制台上运行一个命令来映射一个URL,并确定哪个控制器,哪个方法,哪个http方法以及参数哈希值的给定URL的确切值?

然后是否可以在rails控制台上使用参数hash运行控制器方法,并获取发送到STDOUT的控制器的输出?如果是这样,怎么样?

回答

1

尝试与运行

bundle exec rake routes 

Determine if path exists as route in Rails controller

Rails.application.routes.recognize_path 
+0

我知道这件事。我所寻找的是特别的东西。例如,如果我可以运行诸如“route'/ poweruser/3'”这样的命令,它可能会给我一些像“{:controller =>”poweruser,:params => {:id => 3}}“返回值(散列哈希) –

+0

更新了我的文章... – Lichtamberg

2

尝试这些

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 
+0

第二个是一个正确的答案但我有时会得到一个错误(RuntimeError路径集未定稿),此页在http://stackoverflow.com/ questions/9291366/runtimeerror-route-set-not-finalized-when-calling-rails-application-routes-ge表明这种技术对于Rails 3来说并不好。另外......这种技术不适用于只有路由使用HTTP POST。 –

+1

我通常使用第一个命令来过滤和查找路由,他们的帮手等。 –

相关问题