2012-04-26 16 views
5

मैं संकुल, जो कई अवयवActiveAdmin प्रदर्शन संग्रह

ActiveAdmin में (बंडल के माध्यम से एक has_many का उपयोग करके लिंक), जब मैं एक पैकेज दिखाने मैं सभी अवयव जो इससे जुड़े दिखाने में सक्षम होना चाहते हैं है

show do 
attributes_table do 
    row :description 

    row 'Components' do |n| 
    package.components.each do |component| 
     #debugger 
     component.name 
    end 
    end 
end 
end 

जब मैं पृष्ठ प्रदर्शित, यह यानी प्रत्येक रिकॉर्ड के पूर्ण संस्करण, (जिनमें से एक मैं नीचे दिखाने से पता चलता है, लेकिन के रूप में कई वहाँ हो जाएगा:

तो मैं एक शो विधि इस प्रकार है क्योंकि घटक हैं):

[#<Component id: 2, component_token: "6e9be0b0-71c0-012f-d523-00254bca74c4", name: "Exercise Module", description: "This is the exercise module", created_at: "2012-04-26 11:25:20", updated_at: "2012-04-26 11:25:20">] 

जब मैं बात मैं यह टिप्पणी की है, component.name के लिए मूल्य के रूप में "व्यायाम मॉड्यूल" दिया जाता है पर डिबगर बंद करो, लेकिन यह है कि क्या इस शो के लिए outputted है नहीं है - वास्तव में, ActiveAdmin करने लगता है उसमें सबकुछ अनदेखा करें | घटक | ब्लॉक।

मैं रिकॉर्ड विशेषताओं को कैसे प्रदर्शित करूं, न कि संपूर्ण रिकॉर्ड स्वयं?

धन्यवाद

+0

'concat घटक.name' – alony

+0

आज़माएं जो शून्य के लिए एक अपरिभाषित विधि' << 'फेंकता है: NilClass त्रुटि, हालांकि यह समझ में नहीं आता कि कैसे संगत काम करेगा – Mitch

+0

कभी-कभी ActiveAdmin Iterators में सब कुछ अनदेखा करता है, और इसे 'concat' की आवश्यकता होती है। वैसे भी जवाब में एक बेहतर समाधान मिला :) – alony

उत्तर

15

क्योंकि पंक्ति इस लाइन package.components.each {|component| ... } के उत्पादन में पता चलता है और उस संग्रह

है इस प्रयास करें यह क्या हो रहा है:

show do 

attributes_table do 
    row :description 

    row 'Components' do |n| 
    package.components.map(&:name).join("<br />").html_safe 
    end 
end 

end 

या किसी अन्य स्ट्रिंग में शामिल होने आप पसंद करते हैं :)

+0

यह काम करता है, धन्यवाद, हालांकि मुझे अभी भी समझ में नहीं आता क्यों | घटक | ब्लॉक मूल्यों को थूकता नहीं है ... लेकिन यह मुझे ठीक कर देगा! – Mitch

+0

शायद पंक्ति केवल ब्लॉक को कॉल करती है और जो कुछ भी लौटाती है उसे प्रस्तुत करती है, और हमारे मामले में यह अंतिम पंक्ति देता है - जो इटेटरेटर लौटाता है। वास्तव में आपका उदाहरण भी काम करेगा यदि आप 'प्रत्येक' को 'मानचित्र' में बदलते हैं, लेकिन आपको कुछ प्रारूपण समस्याओं को हल करने की आवश्यकता होगी – alony

+0

उन सभी के लिए धन्यवाद, बहुत सराहना की! – Mitch

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