2

このようなフォームを作成します

    @question = Question.new 
    3.times {@question.answers.build}

検証されない場合は、データが入力された状態でフォームを再表示しています。質問データを入力するのは難しくありません

  @question = @user.questions.new(session[:question])

ただし、回答モデル(コンテンツとリンクフィールドがある)のセッションハッシュからネストされた値を取得するのに問題があります。これは機能していません。

 3.times {@question.answers.build(:content => session[:question][:answers_attributes][:content], :correctanswer => session[:question][:answers_attributes][:correctanswer]) }

ハッシュオブジェクトの0、1、2回の反復が原因だと思います。たとえば、これはハッシュオブジェクトからのスニペットです(以下に完全に表示されています)

"answers_attributes"=>{"0"=>{"content"=>"",

しかし、質問の答えを作成するときにそれをどのように表現するかわかりません

 3.times {@question.answers.build(:content => session[:question][:answers_attributes][:content]....

ビルドしようとしているとき、ハッシュオブジェクトからデータを抽出しようとしている間、反復を表現していません。この行を変更してパラメータをに渡す方法を説明できますかquestion.answers.build

これはハッシュオブジェクトです。

>    Parameters: {"utf8"=>"✓", "question"=>{"content"=>"Lick me",
> "link"=>"bab", "answers_attributes"=>{"0"=>{"content"=>"",
> "correctanswer"=>"0", "_destroy"=>"false"}, "1"=>{"content"=>"",
> "correctanswer"=>"1", "_destroy"=>"false"}, "2"=>{"content"=>"",
> "correctanswer"=>"0", "_destroy"=>"false"}}}, "commit"=>"Create
> Question"}
4

1 に答える 1

1

パラメータには3セットのキー/値があるため、このように、パラメータをループして、反復ごとにquestions.answersを作成することをお勧めします。このようにして、キーを渡すことにより、ネストされたハッシュで反復を表すことができます。

@question = @user.questions.new(session[:question])
session[:question][:answers_attributes].each do |k,v|
        @question.answers.build(:content => session[:question][:answers_attributes][k][:content], :correctanswer => session[:question][:answers_attributes][k][:correctanswer])

       end 
于 2013-02-28T07:53:54.427 に答える