2012-11-27 41 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

我通常使用第一個命令來過濾和查找路由,他們的幫手等。 –

相關問題