2011-08-13 4 views
8

पर एक ही दृश्य, मैं मोबाइल ब्राउज़र में अपनी साइट के लिए वैकल्पिक लेआउट प्रदान करने के लिए Mobile Devices railscast में एक ही रणनीति का उपयोग कर रहा हूं।एक वैकल्पिक रेल लेआउट का उपयोग करना, लेकिन मोबाइल डिवाइस पर

जब कोई मोबाइल ब्राउज़र पता चला है, तो request.format इस पर सेट है: मोबाइल, जिसे मैंने माइम प्रकार के रूप में परिभाषित किया है। मैंने मोबाइल उपकरणों के लिए एक नया लेआउट बनाया है। यदि मैं मोबाइल व्यू (उदा। Show.mobile.haml) प्रदान करता हूं, मोबाइल डिवाइस और मोबाइल लेआउट दोनों मोबाइल उपकरणों पर उपयोग किए जाते हैं, और सबकुछ बढ़िया काम करता है।

समस्या यह है कि, मैं पूरी तरह से नए विचार नहीं बनाना चाहता, यह केवल वह लेआउट है जिसे मैं बदलना चाहता हूं। अगर मैं उचित नामित दृश्य नहीं बनाता, तो मोबाइल लेआउट का कभी भी उपयोग नहीं किया जाता है। तो जैसा कि मैं केवल मोबाइल उपकरणों पर या दोनों को बदलने का प्रबंधन कर सकता हूं।

मुझे यहां क्या याद आ रही है? मुझे मोबाइल उपयोगकर्ता मिलने पर लेआउट केवल लेआउट को स्वैप करने के लिए रेल कैसे मिल सकता है?

उत्तर

18

मान लिया जाये कि आप Railscasts से mobile_device? विधि को शामिल किया है तो बस जोड़ने application_controller.rb के लिए निम्न:

layout :which_layout 
    def which_layout 
    mobile_device? ? 'mobile' : 'application' 
    end 

एप्लिकेशन/विचारों/लेआउट में mobile.html.erb फ़ाइल बनाने के लिए सुनिश्चित करें

चूंकि आप एक ही दृश्य प्रस्तुत करना चाहते हैं, request.format को सेट करने के बारे में चिंता न करें।

+0

धन्यवाद, यह वही है जो मैं ढूंढ रहा था। – Kelly

4

मैंने हमेशा एचटीएमएल से मोबाइल से अनुरोधित प्रारूप को सम्मेलन के खिलाफ स्विच करने के लिए हमेशा पाया है। यह उपकरण को पूरी तरह से दुरुपयोग करता है, इसलिए इसमें कोई आश्चर्य की बात नहीं है कि आप DRY रहने की कोशिश कर रहे समस्याओं में भाग ले रहे हैं।

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

मैं कोड पोस्ट करूंगा, लेकिन tybro0103 बस मुझे बूट के लिंक के साथ पंच पर हराया। Ooooh aaaaah!

+1

+1 इसे मुझसे बेहतर समझाते हुए :) – tybro0103

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