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}多分?