私はアンケートアプリケーション用のレポートを作成するモデルメソッドを持っています。表の各列は異なる質問を表し、各行はインタビュー対象者です。これは、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で壊れます。
私はこれが
@report."q1"
などのようなラインの@ report.column反復することを意味します...
["q1", "q2", "q3", "q4", "q5", "q6", "q7", "q8", "q9", "q10"]
COLUMN_NAMES方法はそうと同じように、文字列の配列を返すため、それができると思いますこれに反対する...
私はそれについて間違っている可能性があります!しかしどちらの方法でも、私はそれをどのように働かせることができるか把握するのには苦労しています。
:今、あなたのコードのように書くことができ
。また、発生する正確なエラーを追加できますか?それが壊れているという報告はあまりにもあいまいです。あなたはどんな結果を期待していますか?あなたは '@ report'が質問と回答の配列を含むインタビュー対象者の配列になると期待していますか? – sorens
レポートテーブルは、各メンバーの行を作成します。 @reportはテーブル内の行(メンバ)を参照します。私は完全な方法を示すために私の質問を更新しました。 – tob88