我试图返回的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方法的调用将返回原始数组,这就是您所看到的。
更改标签<%
(除去=
),你应该是好去。
问题的唯一答案 –