我想返回Rails中对象标题的列表,但我一直得到整个对象而不是标题属性。
loe是一个具有文章列表属性(名称为article)的对象,每篇文章本身都是一个带有标题属性的对象。
这是我目前尝试迭代的方式,但这会返回整个文章列表。
<%= loe.article.each { |x| print x.title } %>
这是我目前尝试迭代的方式,但这会返回整个文章列表。
<%= loe.article.each { |x| print x.title } %>
Array#map
方法,在每个元素上调用title
方法,并创建一个包含结果的新数组:loe.article.map(&:title)
以上是简写形式
loe.article.map{ |o| o.title }
<%=
' 这样的ERB标签意味着您正在请求ERB显示该表达式的结果(除了您在块内调用print
之外)。而像each
这样的Enumerable方法调用将返回原始数组,这就是您看到的内容。<%
(删除=
),然后您就可以开始了。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)
只返回该字段。你仍然会得到对象,但它们是只读的,并且填充了select返回的内容,所以要获取标题数组,你需要使用collect
。
loe.article.map {|x| x.title}
或许是这样的代码?