我有一个模型方法,它为问卷应用程序创建一个报告。表中的每一列代表一个不同的问题,每一行都是一个受访者。它使用column_names方法创建一个问题ID数组,然后添加相关的响应。通过column_names循环遍历变量
def self.import_answers(params)
@members = Member.where(:questionnaire_id => params[:questionnaire])
@columns = Report.column_names
@members.each do |member|
@report = Report.find_by_membership_number(member.membership_number)
@responses = Response.where(:member_id => member.id)
@columns.each do |column|
question = column.to_s.gsub("q", "").to_i
@response = @responses.where(:question_id => question).first
unless @response.nil?
@report.column = @response.response_id
@report.save
end
end
end
端
在线路@ report.column此方法断裂。
我想这可能是因为COLUMN_NAMES方法返回一个字符串数组,像这样......
["q1", "q2", "q3", "q4", "q5", "q6", "q7", "q8", "q9", "q10"]
这意味着这一行@ report.column迭代像
@report."q1"
为反对...
@report.q1
哪些工作。
我可能是错的!但无论哪种方式,我都在努力弄清楚我如何才能使其工作,任何帮助将不胜感激!
你不显示其中'被定义@ report'。另外,你可以添加发生的确切的错误?仅仅报告它中断就太模棱两可了。你期待什么结果?你是否期待'@ report'会是一系列包含一系列问题和回答的受访者? – sorens
报表为每个成员创建一行。 @report引用表中的一行(成员)。我已更新我的问题以显示完整的方法。 – tob88