2010-04-26 13 views
5

मैं इस तरह मार्ग पथ पार्स करने के लिए विधि रहा हूँ:पथ रेल में पार्स करने

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

यह url_for

के विपरीत होना चाहिए Upd
मुझे पता चला है: 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") 

तो अब मुझेरूपांतरित करने की आवश्यकता है "/ पदों"

उत्तर

5
वहाँ

मेंइस विधि है:

>> ActionController::Routing::Routes.recognize_path("/posts/") 
=> {:action=>"index", :controller=>"posts"} 

आप केवल अपने मार्ग के साथ एक स्ट्रिंग (जैसे "posts_path") है, तो मैं संदर्भ में लगता है कि आप इस आप में सक्षम होना चाहिए का उपयोग कर रहे

ActionController::Routing::Routes.recognize_path(send("posts_path".to_sym)) 

करने के लिए btw यह भी मेरे लिए शिक्षित किया गया था :)

+0

आह आप अपने आप को काम :) –

+1

Thx के सबसे किया है:) तो 'भेजें (: post_path) 'क्या है? – fl00r

+0

यह है कि आप रूबी में मनमाने ढंग से नाम के साथ विधियों को कैसे कॉल करते हैं :) इस मामले में, यदि आपके पास 'post_path "जैसी स्ट्रिंग है, और आप इसके बजाय' posts_path' विधि का मान प्राप्त करना चाहते हैं, तो आप बस' भेज दें ("post_path") '(आपको प्रतीक में बदलने की भी आवश्यकता नहीं है)। यह रूबी में एक मूल अवधारणा है, आप इससे बेहतर परिचित होंगे :) –

12

रेल 3 में आप निम्न कर सकते हैं:

Rails.application.routes.recognize_path "/accounts/1" 
# {:action=>"show", :controller=>"accounts", :id=>"1"} 

का उपयोग कर ActionController::Routing::Routes.recognize_path फेंकने

ActionController :: RoutingError अपवाद रखा: नहीं मार्ग मैचों "/ खातों/1

+0

नोट यह भी काम करता है पूर्ण यूआरएल: 'Rails.application.routes.recognize_path 'http: // example.com/accounts/1'' – tee

संबंधित मुद्दे