我試圖返回的Rails對象的標題的列表,但我不斷收到整個對象返回而不是title屬性。遍歷對象和返回數組屬性
LOE是具有它的文章列表(命名文章),每篇文章都是用自己的title屬性的對象的屬性的對象。
<%= loe.article.each { |x| print x.title } %>
是我目前如何嘗試做迭代,但是這將返回整個文章列表。
我試圖返回的Rails對象的標題的列表,但我不斷收到整個對象返回而不是title屬性。遍歷對象和返回數組屬性
LOE是具有它的文章列表(命名文章),每篇文章都是用自己的title屬性的對象的屬性的對象。
<%= loe.article.each { |x| print x.title } %>
是我目前如何嘗試做迭代,但是這將返回整個文章列表。
使用Array#map
調用title
方法上的每個,並創建一個新的數組的結果:
loe.article.map(&:title)
以上是簡寫
loe.article.map{ |o| o.title }
loe.article.map {|x| x.title}
吧?
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
的標題數組。
使用'<%=
'等ERB標記表示您要求ERB顯示該表達式的結果(超出了您在該塊內部調用print
的事實)。對each
等Enumerable方法的調用將返回原始數組,這就是您所看到的。
更改標籤<%
(除去=
),你應該是好去。
問題的唯一答案 –