0

私は3つのモデルを持っています。質問、回答、結果。

answer_idとresult_idを持つ中間モデルanswers_resultsを取得しました。

質問と回答はすでにデータベースにあるため、誰かが新しい調査を開始するときは、result_idとanswer_idをanswers_resultsテーブルに保存する必要があります。

これは私のhtmlがどのように見えるかです:

<input id="answer_id_5" name="answer_id[5]" type="checkbox" value="5">

これは私の回答モデルがどのように見えるかです:

class Answer < ActiveRecord::Base
  attr_accessible :content, :question_id, :value

  belongs_to :question

  has_and_belongs_to_many :results, :join_table => :answers_results
end

これが私の結果モデルです:

class Result < ActiveRecord::Base
  attr_accessible :animal_id

  has_and_belongs_to_many :answers, :join_table => :answers_results
end

結果コントローラー:

class ResultsController < ApplicationController

  def new
    @result = Result.new
    @animal = Animal.find(params[:id])
  end

  def create
    @result = Result.new(params[:result])
        if @result.save
            redirect_to @result
        else
            render 'new'
        end
  end

  def show
    @result = Result.find(params[:id])
  end
end

ただし、answer_idはanswers_resultsに保存されません。result_idは保存されます。

だから私の質問は:answer_idをanswers_resultsテーブルに保存するにはどうすればよいですか。

ありがとう、、

4

1 に答える 1

1

answer_id を answer_results に直接保存するには、build メソッドを使用する必要があると思います

次のアプローチを試してください

以下のように、回答IDで回答を取得し、その回答から結果を構築します

def new
  answer = Answer.find(params[:answer_id])
  @result = answer.build_result # or anser.results.build
  #this is based on has_one/has_many relationship between answer and results
end

def create 
 @result = Result.new(params[:result])
 if @result.save
   redirect_to results_path
 else
   render 'new'
 end
end 
于 2012-12-13T12:50:41.013 に答える