2011-06-24 7 views
5

मैं polimorphic_path का उपयोग करता हूं और यह कुछ छोटी गाड़ी का उपयोग करता है। इस विधि को कुछ रूट सहायक की आवश्यकता है जो परिभाषित नहीं है। मैं कैसे परिभाषित कर सकता हूं (नियमित विधि की तरह) अपने मार्ग सहायक का उपयोग "model_name_path, model_name_url आदि" जैसे किया जाएगा?रेलवे में अपने रूटिंग सहायकों को कैसे परिभाषित किया जाए 3?

उत्तर

2

मुझे _path के लिए एक संभावित उत्तर पता है, लेकिन यह मेरे लिए _url के लिए काम नहीं कर रहा है। किसी को पता है क्यों?

# at the bottom of config/routes.rb 
module ActionView::Helpers::UrlHelper 
    def model_name_path model, args={} 
     # your implementation 
    end 
end 
+0

ओह, मुझे लगता है कि यह _url के लिए भी काम करता है, बस मैं एक नियंत्रक से _url को बुला रहा था और एक दृश्य नहीं। – Ben

+0

कहें कि मेरे पास उपयोगकर्ता_लिंक्स नामक एक सहायक विधि नाम है, मैं आपके उदाहरण के अनुसार विधि नाम कहां निर्दिष्ट करूं। मेरे पास एक पोस्ट मॉडल है। मेरा कोड, इस तरह दिखता है: - ~ मॉड्यूल एक्शन व्यू :: हेल्पर्स :: UrlHelper def post_name_path पोस्ट, args = {} # आपका कार्यान्वयन -> इसमें वास्तव में क्या होना चाहिए? अंत अंत ~ – boddhisattva

+0

मुझे खेद है, मैंने एक उपयुक्त कोड ब्लॉक का उपयोग करने की कोशिश की लेकिन किसी भी तरह से टिप्पणी अनुभाग में इसे सही नहीं मिला। Rails 4 में – boddhisattva

4

यह समाधान मेरे लिए काम करता है।

इस कोड को config/routes.rb फ़ाइल के अंत में जोड़ें। अपने आवेदन के नाम के साथ MyApp को प्रतिस्थापित करना सुनिश्चित करें।

MyApp::Application.routes.named_routes.module.module_eval do 
    def model_name_path(*args) 
    # Your code here 
    end 

    def model_name_url(*args) 
    # Your code here 
    end 
end 

MyApp::Application.routes.named_routes.instance_eval do 
    @helpers += [:model_name_path, :model_name_url] 
end 

ये कस्टम विधियां नियंत्रकों, विचारों और परीक्षणों में उपलब्ध होंगी।

+1

: Rails.application.routes.name_routes.url_helpers_module.module_eval करते हैं ... – luckyjazzbo

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