gpt4 book ai didi

ruby-on-rails - 导出 ActiveAdmin CSV 中的动态列数

转载 作者:行者123 更新时间:2023-12-04 06:16:33 26 4
gpt4 key购买 nike

这是 ActiveAdmin 0.4.3。我们的应用程序运行调查,其中可能有任意数量的调查问题。当用户填写调查时,会创建一个 UserSurveyComment 实例,该实例 has_many调查评论,每个调查的调查问题一个。

这样做的结果是,对于任何给定的调查,所有 UserSurveyComment 实例都将具有相同数量的 SurveyComment,但在不同调查之间,该数量可能会有所不同。

ActiveAdmin CSV 导出是否有可能以这种方式处理 UserSurveyComments,从而依次为用户、调查和每个调查评论提供列?导出由 Survey 限定,因此每一行都有相同的列,但特定的导出可能有不同的数字。

我想做的是类似的事情

survey.survey_questions.each do |sq|
column "Question" { |q| q.survey_comments.where(survey_question_id: sq.id).first.submitted_text }
end

...但在 ActiveAdmin.CSVBuilder 实例中,似乎没有办法访问调查。

也许我在自己的 Controller 中更容易做到这一点?

最佳答案

我了解您的模型类似于

class Survey < ActiveRecord::Base
has_many :user_survey_comments
has_many :survey_questions
end

class SurveyQuestion < ActiveRecord::Base

attr_accessor :name

belongs_to :survey
has_many :survey_comments
end

class UserSurveyComments < ActiveRecord::Base
belongs_to :survey
has_many :survey_comments
end

class SurveyComments < ActiveRecord::Base

attr_accessor :content

belongs_to :user_survey_comments
belongs_to :survey_question
end

csv块, @collection包含过滤输出的对象列表。在配置中可以注册 UserSurveyComment以类似的方式如下:
ActiveAdmin.register UserSurveyComment do
csv do

column(:survey)

visited_surveys = Set[]

@collection.each do |user_survey_comment|

next if visited_surveys.include?(user_survey_comment.survey)
visited_surveys.add(user_survey_comment.survey)

user_survey_comment.survey.survey_questions do |question|
column(question.name) do |user_survey_comment|
user_survey_comment
.survey_comments
.find_by(survey_question_id=question.id)
.try(:response){''}
end
end
end
end
end

关于ruby-on-rails - 导出 ActiveAdmin CSV 中的动态列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27277521/

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