Rails でオブジェクトのタイトルのリストを返そうとしていますが、タイトル属性ではなくオブジェクト全体が返され続けています。
loe は、記事のリスト (名前付きの記事) である属性を持つオブジェクトであり、各記事自体は、タイトルと呼ばれる属性を持つオブジェクトです。
<%= loe.article.each { |x| print x.title } %>
現在反復を試みている方法ですが、これは記事のリスト全体を返します。
Rails でオブジェクトのタイトルのリストを返そうとしていますが、タイトル属性ではなくオブジェクト全体が返され続けています。
loe は、記事のリスト (名前付きの記事) である属性を持つオブジェクトであり、各記事自体は、タイトルと呼ばれる属性を持つオブジェクトです。
<%= loe.article.each { |x| print x.title } %>
現在反復を試みている方法ですが、これは記事のリスト全体を返します。
Array#map
それぞれでメソッドを呼び出し、title
結果を含む新しい配列を作成するために使用します。
loe.article.map(&:title)
上記はの省略形です
loe.article.map{ |o| o.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
はエイリアスでありselect(:fieldname)
、AREL を呼び出してそのフィールドだけを返すことができます。オブジェクトは引き続き取得できますが、それらは読み取り専用であり、選択によって返されたものは何でも入力されるため、タイトルの配列を取得するには、collect
.
loe.article.map {|x| x.title}
多分?