在最后按钮之前禁止提交表单-避免编辑页面
Prevent form being submitted until final button - avoid edit page
我知道SO上有很多类似的问题,但我还没有找到一个适合我尝试做的问题
目前,我有一个页面,根据"测试"中的"问题"数量创建了几个表单标签,如下所示:
<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>
目前我已经禁用了"提交"按钮,因为我不希望在所有表单都完成之前真正提交表单,所以我有了这个Javascript:
$(document).ready(function() {
$('.btn.btn-success').click(function(e) {
e.preventDefault();
this.value="Resubmit";
});
$('#submit_all').click(function(){
$('#submit_answer').each(function(){
$(this).submit();
});
});
});
它确实试图提交答案,但仍然试图将用户带到编辑页面,但有几个[:id],这显然不起作用。。。
在我的测试会话控制器中,我有这样的:
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
是否有任何方法可以强制最后一个链接将其直接带到结果页面,但仍然提交form_tags中的信息?
目前它只是给我一个错误:
No route matches [POST] "/tests/1/testsessions/%23%3CTestsession::ActiveRecord_Associations_CollectionProxy:0x007fe197a72e40%3E/edit"
只有当我按下后退按钮时,我才能进入结果页面。。。
编辑
配置/路由文件:
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 %>
您传递的是所有相关联的测试会话的集合,而不是单个对象,我怀疑这是否是您想要做的
请显示与控制器相关的config/routes.rb的一部分
相关文章:
- 我如何验证/发布编辑类型为表单编辑中的 jqgrid 选择的列
- 动态显示/添加具有不同字段的相同表单到页面
- 如何在不重新加载的情况下在表单编辑中更改主键后刷新jqgrid行id
- 表单在页面加载时未隐藏
- 如何禁用jqgrid中已发布行的内联和表单编辑
- Rails:嵌套的远程表单在页面加载时不起作用
- 提交表单刷新页面,即使使用 e.preventDefault
- 表单在页面加载时而不是单击时运行提交脚本
- 如何在免费的jqgrid中增加表单编辑中的文本区域宽度
- JQUERY从具有多个表单的页面上的多个选择中获取值
- 使用一个表单在页面上使用多个电子邮件地址
- 提交时停止表单刷新页面
- 为什么我的表单在页面加载时自动提交
- 通过表单将页面附加到域名
- JavaScript:表单刷新页面,更改此.form.submit问题
- Javascript - 如何阻止 onClick 擦除表单/刷新页面
- Ajax 帖子表单使页面重定向
- 避免刷新提交表单的页面
- 禁用具有动态 ID 的多个表单的页面上的选择选项
- Don't显示PHP表单操作页面