열 머리글로 연결과 함께 has_many_through 연결 목록을 표시하고 테이블 행의 항목으로 through : 값을 표시하려면 어떻게해야합니까?Active Admin 인덱스에서 has_many 연관을 열로 표시
나는 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
, 각 작업에 대한 행, 열 머리글 각 요소의 제목, 그리고 각각의 점수 셀의 값으로 작업하십시오.
index do |jobs|
column :title
jobs.scores.each do |score|
column(score.factor.name) { |score| score.score }
end
end
과 같은 출력을 얻을 :
나는 app/admin/jobs.rb
파일 같은 것을 할 필요가 기대
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>
나는 Muhamamd Awais가 옳다고 생각합니다. 나는 당신이 당신의 접근 방식을 바꿀 필요가 있다고 생각합니다. 먼저 작업을 반복하여 job.scores를 갖도록하십시오. 왜냐하면 각 개별 객체를 반복하지 않는 한 점수를 찾지 못하기 때문입니다. 둘째, erb 파일로 생각하십시오. 금주 모임의 모든 내용이 인쇄됩니다. 그래서 job.scores.each라고하면 실제로 <% = job.score.each do | score | %> 대신 <% job.score.each do | score | %>. 그것이 의미가 있는지 알고 싶다면 – eileencodes
감사합니다. Eileen, 두 번째 요점은 새로운 것입니다. 나는 그렇게 생각하지 않았습니다. 첫 번째 개념은 의미가 있지만,'index' 블록의 컨텍스트 내에서'job.scores '를 얻기 위해 작업을 반복하는 법을 이해할 수 없었습니다. 이와 관련하여 도움이 될 것입니다. – Tonys