2013-06-27 8 views
5

के तहत नामित रूट सहायक में उपसर्ग जोड़ना इस प्रकार एक सामान्य नामस्थान दिखता है।नेमस्पेस

namespace :admin do 
    resources :posts 
end 

और यह इस तरह का एक नामित मार्ग बनाता है;

new_admin_post_path 

मेरा प्रश्न यहां है; मैं नामस्थान के तहत एक नामित मार्ग पर एक उपसर्ग (जैसे इस उदाहरण में "नया") कैसे जोड़ सकता हूं?

मान लें कि मेरी मार्ग परिभाषा इस तरह पसंद करती है;

namespace :admin do 
    get 'post/new' => 'posts#new', as: 'post' 
end 

और यह एक नामित मार्ग बनाता है;

admin_post_path 

मैं इस नाम पर रखा गया रूट करने के लिए 'नई' उपसर्ग जोड़ने और इसे new_admin_post_path की तरह लग रही है और मैं resources का उपयोग नहीं करना चाहते हैं बनाना चाहते हैं।

+0

क्या आपके पोस्ट नियंत्रक व्यवस्थापक नामस्थान में रहते हैं? यदि हां तो आप इसे पहले तरीके से प्राप्त कर सकते हैं जिसे आपने लिखा है। –

+0

हां यह करता है। लेकिन मैं 'संसाधन' विधि के साथ इसका उपयोग या अनुकूलन नहीं करना चाहता हूं। –

उत्तर

9

बस मार्गों में कोड आज़माएं।

namespace :admin, as: '' do 
    get '/post/new' => 'posts#new', as: 'new_admin_post' 
end 

यदि आप व्यवस्थापक नामस्थान को शून्य के रूप में नहीं बनाना चाहते हैं, तो आप इसे कर सकते हैं। इसके लिए आपको उस मार्ग को नामस्थान से बाहर रखना होगा: मार्गों में व्यवस्थापक ब्लॉक

namespace :admin do 
    # your other routes 
end 

get '/admin/post/new' => 'admin/posts#new', :as => 'new_admin_post' 
+0

'व्यवस्थापक' नेमस्पेस के तहत मैप किए गए अन्य मार्ग हैं इसलिए "व्यवस्थापक" उपसर्ग को छोड़ने और मैन्युअल रूप से प्रत्येक को छोड़ने का कोई मतलब नहीं है। यदि यह संभव है तो मैं नेमस्पेस के तहत नामित मार्गों पर उपसर्ग जोड़ना चाहता हूं, जैसे 'संसाधन' करने में सक्षम। –

+0

कृपया संपादित उत्तर की जांच करें। –

+1

मुझे नामस्थान से मार्ग प्राप्त करने के लिए मजबूर करने का विचार पसंद नहीं है, लेकिन मुझे लगता है कि मैं इस समाधान के साथ अभी जाऊंगा। मैंने काफी सारे विकल्पों की जांच की और कुछ स्रोत कोड पढ़ा लेकिन यह इस तरह की समस्या के लिए काफी समय ले रहा है। –

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