2012-06-13 12 views
5

से मेजबान ऐप के रूट रूट को ओवरराइड करें मैं एक आरोही रेल 3 इंजन लिख रहा हूं, और मैं मेजबान ऐप के साथ अपने इंजन के मार्गों को जोड़ रहा हूं। हालांकि, मेजबान ऐप के मार्ग मेरे इंजन के मार्गों पर प्राथमिकता ले रहे हैं। क्या कोई तरीका है कि मैं मेजबान ऐप के मार्गों (विशेष रूप से रूट रूट) को ओवरराइड कर सकता हूं?माउंटेबल इंजन

यहाँ my_enging/config/routes.rb में मेरी इंजन के मार्गों है:

MyEngine::Engine.routes.draw do 
root :to => "home#index" 
end 

# Mount engine routes to host application 
Rails.application.routes.draw do 
    mount MyEngine::Engine, :at => "/" 
end 

और यहाँ मेजबान के रूट शीर्ष पर बैठे साथ rake routes के परिणाम है,:

root/welcome#index 
my_engine/MyEngine::Engine 
root/home#index 

Spree एक मणि है कि यह करता है, लेकिन मैं यह नहीं ढूंढ पाया कि वे इसे कैसे कार्यान्वित कर रहे हैं।

उत्तर

0

लोग विपरीत चीज करने की अधिक संभावना रखते हैं, इसलिए मुझे पता नहीं लगा कि आपको इसकी आवश्यकता क्यों है, क्योंकि इंजन मार्गों को ओवरराइड करने की क्षमता की अपेक्षा की जाती है। असल में मुझे कोई जवाब नहीं है कि इंजन मार्गों को ओवरराइड करने के लिए इंजन को कैसे मजबूर किया जाए, लेकिन:

स्प्री eval_block के माध्यम से गतिशील रूप से मार्ग जोड़ रहा है, मुझे लगता है।

आप root to: के साथ-साथ अपने आवेदन में सभी अवांछित मार्गों को छोड़ सकते हैं, और फिर इंजन मार्ग उभरेंगे। उन्हें दोनों मत रखो। मुझे आपके आवेदन में निर्दिष्ट रूट दिखाई नहीं दे रहा है, लेकिन मैंने अभी एक प्रयोग चलाया है और सबकुछ काम करता है!

W12::Engine.routes.draw do 
    root to: 'details#index' 
end 

MyCarsApplication.routes.draw do 
    mount Common::Engine => "/" 
end 

और वहाँ केवल एक ही मार्ग है:

root/details#index 

This post about creating not isolated engines भी मदद कर सकता है।

यदि आपको सही उत्तर मिल गया है, तो कृपया इसे पोस्ट करें।

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