2012-06-06 12 views
5

एक रेल में 3.2 आवेदन मैं कर रहा हूं मैं मोबाइल उपकरणों के लिए कुछ दृश्य (और एक्शन हैंडलिंग) विशिष्ट बनाना चाहता हूं। तो मैंने मोबाइल नामक नामस्थान बनाया है।रेल 3.2 - नामस्थान पर रीडायरेक्ट कैसे करें?

namespace :mobile do 
    resources :sessions 
    resources :areas 
    end 

उदाहरण के लिए उपयोगकर्ता एक मोबाइल मैं नियंत्रक और विचारों मुझे लगता है कि नाम स्थान के लिए बनाने का उपयोग करना चाहते के साथ प्रवेश पृष्ठ पर हो जाता है।

तो अब मैं लॉगइन करने के लिए दो अलग-अलग तरीके होते हैं:

new_mobile_session GET /mobile/sessions/new(.:format)  mobile/sessions#new 

और

new_session GET /sessions/new(.:format)    sessions#new 

लेकिन जब एक अनुरोध है कि कैसे मैं अनुरोध करने के लिए "मोबाइल" नाम स्थान जोड़ सकता है अगर यह से आता है आता है मोबाइल?

आईई। बदलना/सत्र/नया/मोबाइल/सत्र/नया

मैं रैक :: मोबाइलडेट का उपयोग कर रहा हूं लेकिन मुझे नहीं पता कि उस उद्देश्य के लिए redirect_to का उपयोग कैसे करें।

config.middleware.use Rack::MobileDetect, :redirect_to => '/mobile' 

या मुझे एक अलग दृष्टिकोण का उपयोग करना चाहिए?

धन्यवाद।

+0

रेक चलाने की कोशिश करें: मार्गों और देखो तुम्हारे पास क्या है, मैं कल्पना आप mobile_sessions_path redirect_to करने की जरूरत है या उनके जैसे की कुछ और। यदि आपके पास मोबाइल रूट नहीं है तो कोई रूट मेल नहीं खाता/मोबाइल होगा – CWitty

उत्तर

0

आप इसके लिए बाधा का उपयोग कर सकते हैं। एक रेल राउटिंग बाधा या तो कक्षा है जो मैचों का जवाब देती है? या एक भेड़ का बच्चा।

जब किसी मार्ग पर बाधा लागू होती है, तो मार्ग केवल तभी माना जाएगा जब बाधा सच हो।

इस वर्ग

class MobileContraint 
    def matches? request 
    request.user_agent =~ /Mobile|webOS/ 
    end 
end 

अब आप इस तरह मार्गों में इस वर्ग का उपयोग कर सकते पर विचार करें:

resources :sessions 
resources :sessions, :controller=> 'mobile/sessions', :constraints => MobileConstraint.new