0

我有 3 个模型。问题、答案和结果。

得到一个带有 answer_id 和 result_id 的中间模型 answers_results。

问题和答案已经在数据库中,因此当有人开始新调查时,需要在 answers_results 表中保存一个 result_id 和 answer_id。

这就是我的 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

我认为您必须使用 build 方法将 answer_id 直接存储在 answer_results

尝试以下方法

使用答案 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 回答