rails - 从url获取id,然后将其作为创建对象的参数传递

时间:2016-06-19 11:39:09

标签: ruby-on-rails

首先,我想询问如何在创建表单中单击提交按钮后重定向。我有一个用于创建测验的表单,在他们点击提交后我想将它们重定向到链接'quiz /:id / add_question'其中:id是刚刚创建的测验的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

quiz /: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>

我的问题的另一部分是我如何在这里传递另一个参数来创建问题对象。我不希望用户输入该参数,因为参数应该是当前网址的id(quiz /:id / add_question)。

1 个答案:

答案 0 :(得分:0)

首先,我认为你拼错了:

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

应该是

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

但您应该使用可用的网址助手。

redirect_to quiz_add_question_path(@quiz.id)

假设这是路线的名称。您可以通过运行rake routes

找到该名称

对于当前测验的id,您可以设置隐藏属性,例如

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