2013-06-03 36 views
5

我試圖返回的Rails對象的標題的列表,但我不斷收到整個對象返回而不是title屬性。遍歷對象和返回數組屬性

LOE是具有它的文章列表(命名文章),每篇文章都是用自己的title屬性的對象的屬性的對象。

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

是我目前如何嘗試做迭代,但是這將返回整個文章列表。

回答

20

使用Array#map調用title方法上的每個,並創建一個新的數組的結果:

loe.article.map(&:title) 

以上是簡寫

loe.article.map{ |o| o.title } 
1

loe.article.map {|x| x.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} 

mapcollect是別名,您可以在AREL上致電select(:fieldname)返回該字段。你仍然可以得到對象,但它們是隻讀的,並且會隨着返回的選擇而填充,所以要獲得需要執行collect的標題數組。

2

使用'<%='等ERB標記表示您要求ERB顯示該表達式的結果(超出了您在該塊內部調用print的事實)。對each等Enumerable方法的調用將返回原始數組,這就是您所看到的。

更改標籤<%(除去=),你應該是好去。

+0

問題的唯一答案 –