gpt4 book ai didi

ruby-on-rails - 通过关联显示 has_many 作为 Active Admin 索引中的列

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:43 25 4
gpt4 key购买 nike

如何显示 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

我希望能够在工作索引中显示每个工作的一行,每个因素的标题作为列标题,每个工作的分数作为单元格中的值。

我希望在 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>

最佳答案

如果我正确理解您的数据,我认为这会奏效。您可以在一行中完成所有操作,如果这不起作用,请查看 map 或收集。您还可以链接每个并映射。确保你使用的是 compact,所以你不会遇到 nils。下面我假设 score.factor.name 等于每列应该命名的内容和填写的数据。

index do |jobs|  column :title  column "Education" do |job|   job.scores.map { |score| score if score.factor.name == "Education"  }.compact  end  column "Experience" do |job|   job.scores.map { |score| score if score.factor.name == "Experience"  }.compact  endend

关于ruby-on-rails - 通过关联显示 has_many 作为 Active Admin 索引中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com