Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阻止表单在最后一个按钮之前提交-避免编辑页面_Javascript_Jquery_Ruby On Rails_Forms - Fatal编程技术网

Javascript 阻止表单在最后一个按钮之前提交-避免编辑页面

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

我知道有很多类似的问题,但我还没有找到一个适合我正在尝试做的…因为我甚至不能100%确定我正在尝试做的事情是可能的

目前,我有一个页面,根据“测试”中的“问题”数量创建了几个form_标签,如下所示:

<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 %>