我试图返回 Rails 中对象的标题列表,但是我不断返回整个对象而不是 title 属性。
loe 是具有属性的对象,该属性是文章列表(命名为文章),每篇文章本身就是一个具有称为标题的属性的对象。
<%= loe.article.each { |x| print x.title } %>
是我目前尝试进行迭代的方式,但这会返回整个文章列表。
我试图返回 Rails 中对象的标题列表,但是我不断返回整个对象而不是 title 属性。
loe 是具有属性的对象,该属性是文章列表(命名为文章),每篇文章本身就是一个具有称为标题的属性的对象。
<%= loe.article.each { |x| print x.title } %>
是我目前尝试进行迭代的方式,但这会返回整个文章列表。
使用像 ' ' 这样的 ERB 标记<%=
意味着您要求 ERB 显示该表达式的结果(超出您在print
块内调用的事实)。并且对 Enumerable 方法的调用each
将返回原始数组,这就是您所看到的。
将标签更改为<%
(删除=
),您应该一切顺利。
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
and collect
are aliases, and you can call select(:fieldname)
on an AREL to return just that field. You still get objects, but they're read-only and are populated with whatever the select returned, so to get the array of titles you need to do the collect
.
loe.article.map {|x| x.title}
也许?