2016-06-19 13 views
1

まず、作成フォームで[送信]ボタンをクリックした後にリダイレクトする方法をお聞きします。私はクイズを作成するためのフォームを持っています。そして、それらが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)を指定する必要があるため、ユーザーはその引数を入力する必要はありません。

答えて

0

私はあなたがスペルミスをしたと思いますまず第一に:

redirect_to 'quiz/' + @quiz.id.to_s + '/add_quesiton' 

redirect_to 'quiz/' + @quiz.id.to_s + '/add_question' 

なるはずですが、むしろ、あなたは利用できるURLヘルパーを使用する必要があります。

redirect_to quiz_add_question_path(@quiz.id) 

これがルートの名前であると仮定します。私はスペルエラーを修正し、それがまだときだけ「/クイズ」に私をリダイレクトします。たとえば

<%= f.hidden_field :quiz_id, value: params[:id] %> 
+0

ための隠し属性を設定することができ、現在のクイズのidにrake routes

を実行して、その名前を見つけることができます私は自分のルートを見ました。私は/ quiz /のプレフィックスを持っていませんでした。:id/add_question 隠しフィールドが動作します。 –

+0

routes.rbファイルを共有できますか? –

関連する問題