2012-03-07 12 views
28

उदाहरण के लिए, मैं एक स्ट्रिंग "new_work_path" कहा जाता है का निर्माण किया है, अब मैं एक विधि के रूप कि सहायक कॉल करना चाहते हैं।रेलवे में मार्गों को गतिशील रूप से कॉल करने के लिए कैसे करें?

मैं send("new_work_path", vars) की कोशिश की और कई वस्तुओं से ही भेजने बुला लिया है। लेकिन मुझे नहीं लगता कि मुझे इन सहायकों को कॉल करने के लिए सही वस्तु मिली है।

object.send("new_work_path", vars) करने के लिए, ऑब्जेक्ट क्या मुझे तलाश करनी चाहिए?

मैं थोड़ी देर के लिए इस ऑनलाइन देखने के लिए कोशिश की है, लेकिन कुछ भी नहीं मिला। अगर कोई इस पर कुछ रोशनी चमक सकता है, तो यह बहुत अच्छा होगा!

धन्यवाद!

+3

हेल्पर तरीकों केवल एक मॉडल नहीं एक दृश्य के संदर्भ में से कहा जा सकता है, कि यदि आप ऐसा करने के लिए कोशिश कर रहे हैं क्या है। क्या आप इस बारे में अधिक विशिष्ट हो सकते हैं कि आप इसे कहां निष्पादित करने का प्रयास कर रहे हैं? यदि आपके पास सही संदर्भ है तो मानक 'प्रेषण' कॉल पर्याप्त होना चाहिए। – tadman

+0

मैं इसे application_helper में निष्पादित करने का प्रयास कर रहा हूं जहां एक मानक मार्ग सहायक कॉल ठीक से काम करेगा। – gtr32x

+3

आपको क्या त्रुटि मिल रही है, फिर? क्या आप एक उदाहरण पोस्ट कर सकते हैं? यदि 'new_work_path' को सीधे कॉल करना है, तो' भेजें (: new_work_path) 'बराबर होना चाहिए। – tadman

उत्तर

34

कोशिश Rails.application.routes.url_helpers.send(...)

+0

अच्छी तरह से काम करता है। "सर्वश्रेष्ठ जवाब" का हकदार है :) –

+1

यह अच्छी तरह से काम करता है। मान लीजिए कि आप एक नेस्टेड संसाधन लिंक करना चाहते हैं, तो आप 'लिख सकता है Rails.application.routes.url_helpers.send (" नया _ # {@ model.class.name.downcase} _comment_url "," #{@model.class.name .downcase} _id ".to_sym => @model) ', क्योंकि आपको माता-पिता' model_id' की आवश्यकता है। – Avishai

+0

यदि आप 'घुड़सवार' इंजन 'से' url_helpers' तक पहुंचने का प्रयास कर रहे हैं, तो ' :: इंजन" .constantize.routes.url_helpers.send (...) 'जहां '' ' अपनी 'routes.rb' फ़ाइल में माउंट' लाइन। – erroric

8

मेरे बुरा, प्रति @tadman के रूप में सुझाव दिया, मैं फिर से send(:new_work_path, args) का उपयोग करने की कोशिश की और यह काम किया! पहले इसे गलत टाइप किया होगा।

new_polymorphic_path(Work, args) 

कौन सा साथ ही कुछ वाक्यात्मक चीनी पेशकश करने के लिए लगता है:

बाहर है कि काम करता है भेजने के तुरंत खोजने से पहले, मैं एक और समाधान जो ब्याज की भी है मिल गया था।

+0

polymorphic_path मजेदार है, आप भी 'polymorphic_path कर सकते हैं (: foo)' या 'polymorphic_path (" बार ")' –

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

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