2009-08-21 11 views
7

मेरे पास एक साइडबार है जिसमें इसमें कुछ तर्क होने वाला है, जैसा कि एक नियंत्रक के साथ एक दृश्य वार्तालाप करता है। मैं आंशिक के लिए तर्क कहां डालूं? क्या मैं लेआउट के लिए एक नया नियंत्रक बना सकता हूं और इसे वहां रख सकता हूं?एक लेआउट में आंशिक के लिए रेल तर्क पर रूबी

लेआउट उपयोगकर्ताओं के लिए लॉग इन है, जैसे डैशबोर्ड। डैशबोर्ड में एक साइडबार होगा जो प्रत्येक पृष्ठ पर एक ही गतिशील सामग्री दिखाता है। चूंकि यह प्रत्येक पृष्ठ पर दिखाया जा रहा है, इसलिए मैं इसे आंशिक रूप में रखना चाहता हूं।

मैं सिर्फ इस बात को लेकर उलझन में हूं कि खोज और सभी जानकारी कहां रखी जाए।

उत्तर

8

शायद ऐसा करने का एक बेहतर तरीका है, लेकिन यदि यह अधिकतर या सभी पृष्ठों पर है तो आप अपने एप्लिकेशन नियंत्रक पर before_filter बना सकते हैं। आपको नियंत्रकों/कार्यों पर skip_before_filter पर कॉल करना होगा, जिन्हें डेटा की आवश्यकता नहीं है।

class ApplicationController < ActionController::Base 
    before_filter :load_sidebar_data 

protected 
    def load_sidebar_data 

    end 
end 

आप अधिकांश पृष्ठों पर अभी भी ApplicationController में विधि डाल चाहते हैं इसकी आवश्यकता नहीं है, तो आप सिर्फ फिल्टर से पहले जहां आपको उसकी आवश्यकता जोड़ना होगा।

+0

एंडी, तुम मेरे लिए एक बहुत बड़ा मदद इन पिछले दो दिनों किया गया है! धन्यवाद! – Ryan

+0

मेरे पास एक साइडबार है जो होमपेज को छोड़कर सभी पृष्ठों पर समान है, और मैं इस कोड का उपयोग कर आवश्यक डेटा को पकड़ता हूं - अब मैं सोच रहा हूं कि वास्तविक दृश्य स्क्रिप्ट कोड डालने के लिए सही जगह कहां है? – jackocnr

1

लेआउट फ़ोल्डर में आंशिक रखें। फ़ाइल का नाम अंडरस्कोर से शुरू होना चाहिए उदाहरण के लिए, "_mypartial.html.erb"।

फिर, अपने विचारों में, यह कोड शामिल करने के लिए आंशिक

"mypartial"%>

ध्यान दें कि आप जब जो रेंडर करने के लिए आंशिक निर्दिष्ट करने एम्बेडेड गहरे लाल रंग का कोड में अंडरस्कोर शामिल नहीं है का उपयोग करें।

1

आप (रेल के लिए घटकों देखें) कोशिकाओं के उपयोग पर विचार हो सकता है: http://cells.rubyforge.org/

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