2010-02-08 23 views
8

मस्तिष्क एक छोटे से तला हुआ है .... मैं कैसे के हैश मिलता है: एक RELATIVE_PATH से कार्रवाई: नियंत्रक और?रेल में url_for के विपरीत क्या है? एक ऐसा कार्य जो पथ लेता है और व्याख्याित मार्ग उत्पन्न करता है?

यह मूल रूप से url_for के विपरीत है। नीचे दिए गए उदाहरण में, "some_function" रहस्य समारोह का नाम है जिसे मैं ढूंढ रहा हूं ... मुझे पता है कि यह आसान है, बस याद नहीं कर सकता है या दस्तावेज़ों में इसे ढूंढने में सक्षम नहीं लगता है।

तो जैसा

:

some_function('/posts/1/edit') 
=> {:controller => 'posts', :action => 'edit', :id => '1'} 
+0

'हैं controller.action_name' और' नियंत्रक है .controller_name' पर्याप्त है? या क्या आपको वास्तव में अपने मौजूदा नियंत्रक/क्रिया के बाहर "सामान्य" से सामान्य सापेक्ष पथों में हेरफेर करने की आवश्यकता है? –

+0

मैं करता हूं ... दुर्भाग्य से। हालांकि धन्यवाद। – btelles

उत्तर

9

Rspec एक विधि 'params_for' है, जो कार्रवाई नियंत्रक रूटिंग के तरीके का उपयोग करता मार्गों में तरीकों के साथ पथ पार्स करने के लिए है।

उनका थोड़ा और इस से मजबूत है, लेकिन यह करने पर निर्भर करता:

def params_for(path, method) 
    params = ActionController::Routing::Routes.recognize_path(path, :method => method) 
end 
+0

आप जब ActionController का उपयोग कर एक प्रतिवाद चेतावनी मिल सकता है :: रूटिंग :: मार्गों –

+0

'params_for' विधि – zykadelic

+1

' Rails.application.routes.recognize_path' रेल 3.2 – zykadelic

8

रेल 3 सबसे अच्छा तरीका है के साथ उपयोग करने के लिए

Rails.application.routes.recognize_path('/posts/1/edit') 
+0

रेल 4 के बारे में क्या? –

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