Javascript 阻止表单在最后一个按钮之前提交-避免编辑页面
我知道有很多类似的问题,但我还没有找到一个适合我正在尝试做的…因为我甚至不能100%确定我正在尝试做的事情是可能的 目前,我有一个页面,根据“测试”中的“问题”数量创建了几个form_标签,如下所示:Javascript 阻止表单在最后一个按钮之前提交-避免编辑页面,javascript,jquery,ruby-on-rails,forms,Javascript,Jquery,Ruby On Rails,Forms,我知道有很多类似的问题,但我还没有找到一个适合我正在尝试做的…因为我甚至不能100%确定我正在尝试做的事情是可能的 目前,我有一个页面,根据“测试”中的“问题”数量创建了几个form_标签,如下所示: <div class="jumbotron"> <% @test.questions.each do |question| %> <div class="panel panel-info"> <div class="panel-headin
<div class="jumbotron">
<% @test.questions.each do |question| %>
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">Question <%= question.question %></h3>
</div>
<div class="panel-body">
<p>
<%= image_tag question.image.url(:medium) %>
</p>
<%= form_tag edit_test_testsession_path(@test, question.testsessions), id: 'submit_answer' do %>
<%= radio_button_tag :answer, "A" %> A
<%= radio_button_tag :answer, "B" %> B
<%= radio_button_tag :answer, "C" %> C
<%= radio_button_tag :answer, "D" %> D
<%= submit_tag 'Submit', class: "btn btn-success", id: 'single_submit' %>
<% end %>
</div>
</div>
<% end %>
<br/>
<%= link_to "See Test Results!", results_path(@test), class: "btn btn-lg btn-info btn-block", id: "submit_all" %>
</div>
它确实尝试提交答案,但仍然尝试将用户带到编辑页面,但有几个[:id],这显然不起作用
在我的TestSessionController中,我有:
class TestsessionsController < ApplicationController
def new
@test = Test.find(params[:test_id])
@testsession = Testsession.new
redirect_to action: :create
end
def create
@test = Test.find(params[:test_id])
@test.questions.each do |question|
@test.testsessions.create user: current_user, question: question
end
redirect_to action: :index
end
def index
@test = Test.find(params[:test_id])
@questions = @test.questions
# @testsession = Testsession.find(params[:id])
end
def show
@testsession = Testsession.find(params[:id])
@test = Test.find(params[:test_id])
@questions = @test.questions
end
def update
@testsession = Testsession.find(params[:id])
# @question = Question.find(params[:question_id])
@testsession.update(params.require(:testsession).permit(:answer))
redirect_to action: :results
end
def edit
@testsession = Testsession.find(params[:id])
@question = Question.find(params[:question_id])
@testsession.update(params.require(:testsession).permit(:answer))
redirect_to action: :results
end
def results
@test = Test.find(params[:id])
@testsession = Testsession.find(params[:id])
end
end
只有当我按下“后退”按钮时,它才会将我带到结果页面
编辑
配置/路由文件:
Rails.application.routes.draw do
devise_for :users
root 'welcome#index'
get 'tests/:id/testsessions/new' => 'testsessions#create'
get 'tests/:id/testsessions/results' => 'testsessions#results', as: :results
resources :tests do
resources :questions
resources :testsessions
end
end
Upd我想你的意思是:
<%= form_tag edit_test_testsession_path(@test, @testsession), id: 'submit_answer' do %>
问题似乎在这里:
<%= form_tag edit_test_testsession_path(@test, question.testsessions), id: 'submit_answer' do %>
您正在传递的是所有关联testsessions的集合,而不是单个对象,我怀疑这是否是您想要做的
请显示与控制器相关的config/routes.rb的一部分我添加了config/routes文件…我看到它返回了一组对象,但这是因为它要迭代问题并提交多个答案。。。。
<%= form_tag edit_test_testsession_path(@test, @testsession), id: 'submit_answer' do %>
<%= form_tag edit_test_testsession_path(@test, question.testsessions), id: 'submit_answer' do %>