Ruby on rails rails—从url获取id,然后将其作为创建对象的参数传递
首先,我想问一下在创建表单中单击submit按钮后如何重定向。我有一个创建测验的表单,在他们点击提交后,我想将他们重定向到链接'quick/:id/add_question',其中:id是刚创建的测验的id,但我只是被重定向到/quizzes,这会导致浏览器中出现“连接重置”错误 这是我的测验表格:Ruby on rails rails—从url获取id,然后将其作为创建对象的参数传递,ruby-on-rails,Ruby On Rails,首先,我想问一下在创建表单中单击submit按钮后如何重定向。我有一个创建测验的表单,在他们点击提交后,我想将他们重定向到链接'quick/:id/add_question',其中:id是刚创建的测验的id,但我只是被重定向到/quizzes,这会导致浏览器中出现“连接重置”错误 这是我的测验表格: <div> <h2>Create Quiz</h2> <%= form_for(@quiz) do |f| %> <div>
<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
class-QuizzesController
quick/: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>
我问题的另一部分是,如何在这里传递另一个参数来创建问题对象。我不希望用户输入该参数,因为该参数应该是当前url中的id(quick/:id/add_question)。首先,我认为您犯了拼写错误:
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)
假设这是路线的名称。您可以通过运行rake routes
例如,对于当前测验的id,可以设置隐藏属性
<%= f.hidden_field :quiz_id, value: params[:id] %>
首先,我认为你犯了一个拼写错误:
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)
假设这是路线的名称。您可以通过运行rake routes
例如,对于当前测验的id,可以设置隐藏属性
<%= f.hidden_field :quiz_id, value: params[:id] %>
我修复了拼写错误,当我查看路线时,它仍然将我重定向到“/quizzes”,我的/quick/:id/add_question没有前缀。隐藏字段有效,谢谢!你能分享你的routes.rb文件吗?我修复了拼写错误,当我查看我的路线时,它仍然将我重定向到“/quizzes”,我的/quick/:id/add_question没有前缀。隐藏字段有效,谢谢!您可以共享routes.rb文件吗?