2010-08-18 14 views
7

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

वर्तमान में मुझे पता है कि कई एफएफ हैं। विधि:

एक साझा आंशिक प्रस्तुत -> कोई जहां क्वेरी डाल करने के लिए

render :partial => "shared/sidebar" 

के लिए सामग्री - टिप्पणी

<%= yield :sidebar %> 
<% content_for :sidebar do %> 
    <a href="http://www.netscape.com">Netscape</a><br> 
    <a href="http://www.lycos.com">Lycos</a><br> 
    <a href="http://www.walmart.com">Wal Mart</a><br> 
<% end %> 

3 में> अतिरिक्त विवरण लेआउट फाइल करने के लिए सीधे इसे लिखने है ।

तो मुझे यह काम कैसे करना चाहिए?

+0

"सामग्री के लिए -> फिर भी यह दृश्य में है" क्यों? आईएमएचओ इस तरह से आप ऐसा कर सकते हैं और अभी भी सभी क्वेरी कंट्रोलर में हैं, आपको इस तरह से प्रश्न में प्रश्न की आवश्यकता क्यों होनी चाहिए? – jigfox

+0

मूल रूप से मेरी समझ पर आधार। यह नियंत्रक के दृष्टिकोण में स्थानांतरित हो गया। लेकिन अगर ऐसा है तो मुझे प्रत्येक नियंत्रक में क्वेरी कोड डालना होगा और साइडबार को प्रदर्शित करने के लिए प्रत्येक दृश्य पर content_for डालना होगा। – DucDigital

उत्तर

9

यदि आप इसे हर दृश्य में चाहते हैं, तो आप उस विधि को रख सकते हैं जो application_controller में आवश्यक डेटा को पॉप्युलेट करता है और इसे ट्रिगर करने के लिए पहले_फिल्टर का उपयोग करता है।

before_filter :load_sidebar 

def load_sidebar 
    @data = Thingy.find(:all) 
end 

तब आपके आंशिक या content_for तत्व @ डेटा और प्रक्रियाओं के लिए जांचता है।

1

यदि आप अपने application_controller.rb में कोड की मात्रा को कम करना चाहते हैं, तो आप Cells मणि का उपयोग करने पर विचार करना चाहेंगे।

यह आपको एक अलग सेल नियंत्रक में अपनी 'क्वेरी' को परिभाषित करने की अनुमति देगा, और आप इसके दृश्य के अंदर render_cell :sidebar, :myquery जैसे कुछ का उपयोग करके सामग्री प्रस्तुत करेंगे।

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