まず、作成フォームで[送信]ボタンをクリックした後にリダイレクトする方法をお聞きします。私はクイズを作成するためのフォームを持っています。そして、それらがsubmitをヒットした後、私はリンク 'quiz /:id/add_question'にそれらをリダイレクトしたいと思います:idはちょうど作成されたクイズのIDですが、代わりに/クイズにリダイレクトされますブラウザで「接続がリセットされました」というエラーが発生します。ここでrails - URLからIDを取得し、オブジェクトを作成するための引数として渡します。
は私のクイズ形式である:
<div>
<h2>Create Quiz</h2>
<%= form_for(@quiz) do |f| %>
<div>
<%= f.label :name %>
<%= f.text_field :name %> </br>
<%= f.label :subject %>
<%= f.text_field :subject %>
</div>
<%= f.submit "Submit" %>
<% end %>
</div>
そして、私のクイズコントローラ:
class QuizzesController < ApplicationController
def new
@quiz = Quiz.new
end
def create
@quiz = Quiz.new(quiz_params)
flash[:success] = "Quiz Created successfully" if @quiz.save
redirect_to 'quiz/' + @quiz.id.to_s + '/add_question'
end
private
def quiz_params
params.require(:quiz).permit(:name, :subject)
end
end
クイズ/:ID/add_questionリンクは質問作成フォームにつながる:
<div>
<%= form_for(@question) do |f| %>
<%= f.label :question %></br>
<%= f.text_field :question %></br>
<%= f.label :answer1 %></br>
<%= f.text_field :answer1 %></br>
<%= f.label :answer2 %></br>
<%= f.text_field :answer2 %></br>
<%= f.label :answer3 %></br>
<%= f.text_field :answer3 %></br>
<%= f.label :answer4 %></br>
<%= f.text_field :answer4 %></br>
<%= f.label :correct_id %></br>
<%= f.text_field :correct_id %></br>
<%= f.submit "Add question" %>
<% end %>
</div>
私の質問のもう1つの部分は、ここで質問オブジェクトを作成するための別の引数をどのように渡すことができるかです。引数には現在のURLのid(クイズ/:id/add_question)を指定する必要があるため、ユーザーはその引数を入力する必要はありません。
ための隠し属性を設定することができ、現在のクイズのidに
rake routes
を実行して、その名前を見つけることができます私は自分のルートを見ました。私は/ quiz /のプレフィックスを持っていませんでした。:id/add_question 隠しフィールドが動作します。 –
routes.rbファイルを共有できますか? –