मुझे एकाधिक नामों के माध्यम से एक मार्ग सुलभ होना चाहिए। मेरी routes.rb
में मैंउपनाम मार्ग का नाम
get '/route' => 'controller#edit', :as => 'name_a'
get '/route' => 'controller#edit', :as => 'name_b'
किया यह अच्छी तरह से काम करता है लेकिन कुछ नहीं के लिए मार्गों तालिका लोड करता है। प्रलेखन की मेरी समझ से, :as
कॉल करते समय एक सहायक विधि को परिभाषित करता है।
तो मैं अपने ApplicationController
के पास गया और
alias_method :name_b, :name_a
जोड़ा गया है और मैं routes.rb
से दूसरी पंक्ति को हटा दिया, लेकिन वह Uncaught exception: undefined method name_a for class ApplicationController
के साथ विफल हो वहाँ के लिए दो नाम होने के किसी भी उचित तरीके से है एक रास्ता?
================= संपादित ==================== विस्तार:
मैं 2 प्रकार के उपयोगकर्ताओं के सत्र, पंजीकरण, लॉकिंग इत्यादि का प्रबंधन करने के लिए डेविस मणि का उपयोग करें, चलो उन्हें Admin
और Guest
पर कॉल करें। मणि बहुत अच्छी तरह से रखा जाता है लेकिन यह निश्चित रूप से व्यवहार करने के लिए निश्चित मार्ग नाम मांगता है।
app
controllers
users
admin
registration_controller.rb
guest
registration_controller.rb
session_controller.rb
password_controller.rb
registration_controller.rb
Admin
और Guest
नियंत्रकों से विरासत:
मेरे मामले में, जहाँ तक वसीयत का संबंध है, केवल पंजीकरण की प्रक्रिया अलग तो मैं एक संरचना है जो इस प्रकार लग रहा है निर्माण करने के लिए कोशिश कर रहा हूँ है पंजीकरण_ नियंत्रक से ऊपर जो डेविस से प्राप्त होता है।
अब, ठीक से काम करने के लिए, उदाहरण के लिए पासवर्ड को पुनर्प्राप्ति या हटाने के लिए नाम guest_user_password
और admin_user_password
नामों की आवश्यकता है। मेरे मामले में, दोनों एक ही रास्ते में हैं इसलिए मैं दोनों नामों को एक ही 'उपयोगकर्ता/पासवर्ड' नियंत्रक पर रीडायरेक्ट करना चाहता हूं।
अधिक महत्वपूर्ण, और यही कारण है कि मैं वास्तव में अलगाव करना चाहता था। क्या यह है कि मेरे विचारों पर ध्यान नहीं दिया जाना चाहिए कि यह पासवर्ड पुनर्प्राप्ति नियंत्रक पर रीडायरेक्ट करते समय 10 और Guest
मार्गों से निपट रहा है या नहीं। दोनों उपयोगकर्ता हैं इसलिए मैं दोनों के लिए user_password
का उपयोग करना चाहता हूं।
इसलिए मेरा प्रश्न। :)
यह भी ध्यान दें कि जैसा कि मैंने लिखा है, चीजें काम करती हैं। मैं इसे लिखने का 'सबसे सुंदर तरीका' पाने की कोशिश कर रहा हूं।
: जैसा कि => 'name_a' एक उपनाम बनाता है जिसका आप मार्ग के लिए उपयोग कर सकते हैं, उदाहरण के लिए name_a_path और name_b_path, यह एक रूटिंग तंत्र कुछ नहीं है जो नियंत्रक में होता है। –
तो इसका मतलब यह नहीं होगा कि रूटिंग टेबल लोड करने के अलावा कोई अन्य तरीका नहीं है। :(धन्यवाद। – muichkine
क्यों दुनिया में आपको अलग-अलग नामों से उसी पथ का संदर्भ देने की आवश्यकता होगी? – Catfish