noobの質問/不適切な書式設定のために事前にお詫び申し上げます。私の最初の投稿です。私は明確に説明しようとします。私のアプリでは、2つのオブジェクトquiz
とquiz_question
があります。Railsの更新により、毎回新しいオブジェクトが作成されます
10の質問がありますが、1ページに1つの長いフォームではなく10のページに作成したいクイズを作成します。私は、クイズのオブジェクトを更新しようとしていますが、更新方法が呼び出しているとき、それは再びすべての質問を追加して、そのオブジェクトの数が急激に1を増加させ、3、7など
quiz
は、多くのquiz questions
これを持っています私のコントローラである:
def new
@quiz = Quiz.new
1.times{@quiz.quiz_questions.new}
end
def create
# return render json:params
@quiz = Quiz.new(quiz_params)
respond_to do |format|
if @quiz.save
format.html{ redirect_to edit_quiz_path(@quiz.id)}
else
format.html{ render :new}
end
end
end
def edit
# return render json:params
@quiz = Quiz.find params[:id]
1.times{@quiz.quiz_questions.new}
end
def update
#return render json:params
@quiz = Quiz.find params[:id]
@quiz.update(quiz_params)
respond_to do |format|
if @quiz.save && @quiz.quiz_questions.count < 10
format.html{ redirect_to edit_quiz_path(@quiz.id)}
elsif @quiz.save && @quiz.quiz_questions.count > 10
format.html{ redirect_to dashboard_teachers_path, notice: "Quiz Created Successfully"}
else
format.html{ render :edit}
end
end
end
そして、これは
<%= simple_form_for(@quiz, :defaults => { :input_html => { :class => "hello" } }) do |f| %>
<%= f.error_notification %>
<%= f.simple_fields_for :quiz_questions do |builder| %>
<p><%= builder.input :question %></p>
<p><%= builder.input :correct_answer %></p>
<p><%= builder.input :incorrect_answer1 %></p>
<p><%= builder.input :incorrect_answer2 %></p>
<p><%= builder.input :incorrect_answer3 %></p>
<% end %>
<%= f.button :submit, class: "btn btn-default" %>
<% end %>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(window).load(function() {
$('input[type=text], textarea').each(function() {
// Cache pointer to selected dom element.
// Don't need to parse entire html each time you need that.
var input = $(this);
// .val() will return empty string if there is no value
// 0 means false in this case don't need to use equality check
if (!input.val()) {
input.parent().css("display", "block");
} else {
input.parent().css("display", "none");
}
});
})
</script>
EDIT私の編集ビューである:明確にするために。新しいquiz_question
オブジェクトを追加し、それをquiz
オブジェクトに割り当てるたびに、編集アクションを10回進める必要があります。
私はあなたが代わりに '' PUT'または 'PATCH'のPOST'コールを作っていると思います。 POSTは新しいレコードを作成し、PUTとPATCHは既存のレコードを更新します。 – aks
あなたの答えをありがとうが、これは機能しませんでした。私は私が何をしようとしているのか明確に説明しなかったと思う。私は、私が助けてくれることを望む明確な編集を加えました。 –
あなたは何をしたいのか分かりませんが、質問を作成したいだけなら、 '@ quiz'のフォームを作ることはできません。それが提出されるたびに、新しいQuizオブジェクトが作成されます。 –