has_many_through アソシエーションのリストを、そのアソシエーションを列見出しとして表示し、through: 値をテーブル行のエントリとして表示するにはどうすればよいですか?
私は3つのモデルを持っています:
class Jobs
attr_accesor :title
has_many :scores
has_many :factors, through: :scores
end
class Scores
attr_accesor :score
belongs_to :job
belongs_to :factor
end
class Factor
attr_accesor :name
has_many :scores
has_many :jobs, through: :scores
end
Jobs インデックスで、各 Job の行、各 Factor のタイトルを列見出しとして、各 Job のスコアをセルの値として表示できるようにしたいと考えています。
ファイルで次のようなことをしなければならないと思いapp/admin/jobs.rb
ます:
index do |jobs|
column :title
jobs.scores.each do |score|
column(score.factor.name) { |score| score.score }
end
end
そして、次のような出力を取得します。
Job | Education | Experience | Leadership | ... |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CEO | 600 | 720 | 580 | ... |
Admin Assistant | 210 | 200 | 150 | ... |
しかし、activeadmin はこの行が気に入らないようでjobs.scores.each
、次のエラーが表示されます。
undefined method `scores' for
#<ActiveAdmin::Views::IndexAsTable::IndexTableFor:0x00000104d1dad0>