2009-08-19 22 views
8

क्या संसाधन में सबडोमेन को मानचित्र करना संभव है? मेरे पास एक कंपनी मॉडल है। वर्तमान में, subdomain_fu का उपयोग कर, मेरे मार्ग फ़ाइल है:रेल: संसाधन के लिए सबडोमेन रूटिंग

map.company_root '', :controller => 'companies', :action => 'show', 
         :conditions => { :subdomain => /.+/ } 

मेरी कंपनी के मॉडल एक "उप डोमेन" कॉलम शामिल है।

हालांकि यह कार्य करता है, यह एक नामित मार्ग है और यह आराम से नहीं है। अनिवार्य रूप से, मुझे कंपनियों के नियंत्रक के लिए शो एक्शन में "name.domain.com" को मैप करना होगा। क्या नामित मार्ग जाने का रास्ता है, या क्या मैं संसाधन मार्ग का उपयोग कर सकता हूं?

उत्तर

4

मुझे map.resources के साथ ऐसा करने का कोई तरीका नहीं पता। यह :conditions विकल्प स्वीकार करता है लेकिन मुझे यकीन नहीं है कि URL के /companies/ भाग को कैसे निकालें। हालांकि, map.resources मुख्य रूप से नामित मार्गों का एक समूह उत्पन्न करने का एक सुविधाजनक तरीका है, जिसे आप मैन्युअल रूप से कर सकते हैं। कुछ इस तरह।

map.company '', :controller => 'companies', :action => 'show', :conditions => { :subdomain => /.+/, :method => :get } 
map.new_company 'new', :controller => 'companies', :action => 'new', :conditions => { :subdomain => /.+/, :method => :get } 
map.edit_company 'edit', :controller => 'companies', :action => 'edit', :conditions => { :subdomain => /.+/, :method => :get } 
map.connect '', :controller => 'companies', :action => 'create', :conditions => { :subdomain => /.+/, :method => :post } 
map.connect '', :controller => 'companies', :action => 'update', :conditions => { :subdomain => /.+/, :method => :put } 
map.connect '', :controller => 'companies', :action => 'destroy', :conditions => { :subdomain => /.+/, :method => :delete } 

अनचाहे, लेकिन यह आपको बंद कर देना चाहिए।

+0

धन्यवाद रयान! मैंने जो किया है वह नामस्थान के तहत कंपनियों का संसाधन है। यह सबडोमेन के बिना कार्यों को नए, संपादित, निर्माण, अद्यतन और नष्ट करने की अनुमति देता है: I.e. domain.com/namespace/companies/action फिर, नामस्थान के बाहर, मैं उस map.company नाम का मार्ग उपयोग कर रहा हूं (जब सबडोमेन मौजूद होता है)। सब कुछ अच्छी तरह से मैपिंग प्रतीत होता है। – Homar

8

कोई संसाधन मार्ग के साथ-साथ एक नामित मार्ग की शर्तों को पारित कर सकता है। एक आवेदन में मैं सबकुछ शामिल हूं जिसमें सबकुछ एक खाते में है। ए: पहले_फिल्टर सबडोमेन का उपयोग कर खाता लोड करता है। इस प्रकार संसाधनों के लिए एक खाते में प्रवेश किया जाता है, हम मार्गों को सबडोमेन के साथ यूआरएल में गुंजाइश करना चाहते हैं। यह करने के लिए सूखी रास्ता विकल्पों के साथ मानचित्र का उपयोग करने के लिए है:

map.with_options :conditions => {:subdomain => /.+/} do |site| 
    site.resources :user_sessions, :only => [:new, :create, :destroy] 
    site.resources :users 
    site.login 'login', :controller => "user_sessions", :action => "new" 
    site.logout 'logout', :controller => "user_sessions", :action => "destroy" 
    … 
    end 

    map.connect 'accounts/new/:plan', :controller => "accounts", :action => "new" 
    map.resources :accounts, :only => [:new, :create] 

आप देख सकते हैं एक नामित मार्ग भी एक उप डोमेन से एक की स्थिति हैश को स्वीकार करेंगे। तुम भी या दृष्टिकोण रयान ऊपर सचित्र गोद ले सकते हैं कि आप एक प्रति संसाधन आधार पर शर्तें निर्दिष्ट कर सकते हैं:

map.resources :users, :conditions => {:subdomain => /.+/} 
2

यहाँ (एक विस्तृत ट्यूटोरियल के साथ) प्रमाणीकरण के साथ Rails 3 subdomains की एक पूरी उदाहरण दिया गया है। रेल 2 में रेलवे 3 में ऐसा करना बहुत आसान है (कोई प्लगइन आवश्यक नहीं है)।

+0

टिप के लिए धन्यवाद। मार्गों के लिए गहरा लिंक। आरबी उदाहरण है: https://github.com/fortuity/rails3-subdomain-devise/blob/master/config/routes.rb –

2

उपडोमेन आधार पर एक अलग नियंत्रक से संसाधन डैनियल जवाब से जुड़ा हुआ है, रेल 3 तरह से उपयोग करना रूट करने के लिए '/' इस प्रकार है:

match '/' => 'somecontroller#action', :constraints => { :subdomain => 'yoursubdomain' } 
संबंधित मुद्दे