2009-11-25 12 views
6

मैं मॉडल के तत्वों को दो समान आकार के टुकड़ों में कैसे विभाजित कर सकता हूं ताकि मैं उन्हें दो कॉलम में दिखा सकूं?RoR दो कॉलम में तत्व दिखाएं

i have this: 

element 1 
element 2 
element 3 
element 4 
element 5 


and i want this: 

element 1 element 4 
element 2 element 5 
element 3 

split() दुर्भाग्यवश मध्य तत्व को हटा देता है।

+0

क्या आप अधिक विशिष्ट हो सकते हैं? हमें कुछ कोड दिखाओ! :) –

उत्तर

8

ऐरे # in_groups_of एक कोर एक्सटेंशन है और केवल रेल में उपलब्ध है। हालांकि यह प्रत्येक_स्लिस विधि का उपयोग करता है।

आप इस तरह इसका इस्तेमाल कर सकते हैं:

a = ["element 1", "element 2", "element 3", "element 4", "element 5"] 
a.each_slice((a.size/2.0).ceil) { |slice| puts slice } if a.size > 0 

आप

["element 1", "element 2", "element 3"] 
["element 4", "element 5"] 

ध्यान दें कि आप जांच करनी चाहिए कि a.size बड़ा तो 0 है दे देंगे या आप एक ArgumentError अपवाद मिल जाएगा अवैध टुकड़ा आकार के कारण।

+0

यदि यह केवल रेल में उपलब्ध है, तो यह बिल्कुल ठीक है। –

+0

आकार के लिए जांच करने पर अच्छा कॉल> 0. आज मुझे थोड़ा सा धन्यवाद, धन्यवाद! –

1

चेक बाहर Array#in_groups_of

यह अपनी पसंद की मात्रा में एक सरणी काट देगा।

0

एक दृष्टिकोण jQuery का उपयोग करना है। ऐसे कई प्लगइन्स हैं जो आपके लिए इसे पूरा कर सकते हैं।

इसके बाद, आपके पास दो भाग होने के बाद, पहले समूह के साथ एक div भरना शुरू करें, एक बार जब आप अंत तक पहुंच जाएंगे, तो दूसरा समूह दूसरे div में शुरू करें। फिर एक दूसरे के बगल में दो divs को स्थिति और शैली के लिए सीएसएस का उपयोग करें।

2

के रूप में मैं केवल रेल में इस का उपयोग करने की जरूरत है, यह मेरे लिए काम किया:

>> a = [1,2,3,4,5] 
=> [1, 2, 3, 4, 5] 
>> a.in_groups_of((a.size/2.0).ceil, false) if a.size > 0 
=> [[1, 2, 3], [4, 5]] 
0

आप कहाँ इन तत्वों को दिखाने के लिए कोशिश कर रहे हैं?

यदि यह एक दृश्य में है, तो आपको अपने मॉडल को संशोधित नहीं करना चाहिए; आपके मॉडल को आपकी प्रस्तुति से स्वतंत्र रहना चाहिए।

यदि आप किसी वेब पेज पर परिणाम प्रस्तुत करना चाहते हैं, तो आपको अपने दृश्य में HTML और CSS का उपयोग करना होगा। यहां तक ​​कि आपके विचार में, आपको शायद अपने तत्वों को उप सरणी में "विभाजित" करने की आवश्यकता नहीं होगी।

उदाहरण के लिए this page देखें। यदि आप स्रोत कोड देखते हैं, तो सूचियां समूह में विभाजित किए बिना "दूसरे के बाद एक" होती हैं। सीएसएस की स्थिति कैसे टेक्स्ट स्थित है।

+0

पृष्ठ एक खराब उदाहरण है क्योंकि यदि आप मेरे प्रश्न में कोड ब्लॉक को याद करते हैं तो यह वांछित आदेश नहीं लेता है। मैं सरणी के प्रत्येक भाग को एक आवृत्ति चर में डालने की कोशिश कर रहा हूं जिसे फिर दृश्य में प्रदर्शित किया गया है और प्रदर्शित किया गया है। या कोई बेहतर तरीका है? –

+0

हाय पैट्रिक, मुझे समझ में नहीं आता कि आप क्यों कहते हैं कि आदेश संरक्षित नहीं है। यदि आपके पास [1,2,3,4] सरणी है तो आपकी HTML आइटम आदि आपको केवल उस चर को देखने के लिए पास करना होगा, और यह इसे दो में प्रस्तुत करेगा सीएसएस का उपयोग कर कॉलम। मुझे दो चर की आवश्यकता नहीं है। – kikito

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