8

Rails でオブジェクトのタイトルのリストを返そうとしていますが、タイトル属性ではなくオブジェクト全体が返され続けています。

loe は、記事のリスト (名前付きの記事) である属性を持つオブジェクトであり、各記事自体は、タイトルと呼ばれる属性を持つオブジェクトです。

<%= loe.article.each { |x| print x.title } %>

現在反復を試みている方法ですが、これは記事のリスト全体を返します。

4

4 に答える 4

22

Array#mapそれぞれでメソッドを呼び出し、title結果を含む新しい配列を作成するために使用します。

loe.article.map(&:title)

上記はの省略形です

loe.article.map{ |o| o.title }
于 2013-06-03T22:37:21.563 に答える
1
class LOE < ActiveRecord::Base
  has_many :articles
end

class Article < ActiveRecord::Base
  belongs_to :loe
end

loe.articles.select(:title).collect{|a| a.title}

mapcollectはエイリアスでありselect(:fieldname)、AREL を呼び出してそのフィールドだけを返すことができます。オブジェクトは引き続き取得できますが、それらは読み取り専用であり、選択によって返されたものは何でも入力されるため、タイトルの配列を取得するには、collect.

于 2013-06-04T05:22:09.240 に答える
1

loe.article.map {|x| x.title}多分?

于 2013-06-03T22:36:24.730 に答える