2013-06-03 7 views
5

मैं रेल में ऑब्जेक्ट्स के शीर्षकों की एक सूची वापस करने की कोशिश कर रहा हूं, हालांकि मैं शीर्षक विशेषता के बजाए पूरी ऑब्जेक्ट लौटा रहा हूं।ऑब्जेक्ट्स और रिटर्न एट्रिब्यूट्स के एरे पर इटरेट

loe वह ऑब्जेक्ट है जिसमें एक विशेषता है जो आलेखों (नामित आलेख) की एक सूची है, प्रत्येक लेख स्वयं शीर्षक वाला एक विशेषता वाला ऑब्जेक्ट है।

<%= loe.article.each { |x| print x.title } %> 

यह है कि मैं वर्तमान में पुनरावृत्ति करने का प्रयास कर रहा हूं, लेकिन यह लेखों की पूरी सूची देता है।

उत्तर

20

उपयोग Array#map प्रत्येक पर title विधि आह्वान करने के लिए और परिणाम के साथ एक नई सरणी बनाने के लिए:

loe.article.map(&:title) 

ऊपर

loe.article.map{ |o| o.title } 
1
class LOE < ActiveRecord::Base 
    has_many :articles 
end 

class Article < ActiveRecord::Base 
    belongs_to :loe 
end 

loe.articles.select(:title).collect{|a| a.title} 

map और collect उपनाम हैं के लिए आशुलिपि है, और आप उस क्षेत्र को वापस करने के लिए AREL पर select(:fieldname) पर कॉल कर सकते हैं। आपको अभी भी ऑब्जेक्ट मिलते हैं, लेकिन वे केवल पढ़ने के लिए होते हैं और जो भी चयन किया जाता है उसके साथ पॉप्युलेट किया जाता है, इसलिए collect करने के लिए आपको शीर्षक की सरणी प्राप्त करने के लिए।

2

'<%=' जैसे ईआरबी टैग का उपयोग करना मतलब है कि आप उस अभिव्यक्ति के परिणाम को प्रदर्शित करने के लिए ईआरबी से पूछ रहे हैं (इस तथ्य से ऊपर और उससे परे कि आप ब्लॉक के अंदर print पर कॉल कर रहे हैं)। और each जैसे एक संख्यात्मक विधि के लिए एक कॉल मूल सरणी वापस कर देगा, जो आप देख रहे हैं।

टैग को <% पर बदलें (= हटाएं) और आपको जाने के लिए अच्छा होना चाहिए।

+0

प्रश्न का एकमात्र जवाब –

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