2012-12-12 55 views
0

我使用Ajax发布数据的表单如下。rails form_tag不提交

<%= form_tag(check_answer_path, :id =>'myForm', :method => 'post', :remote => true) do %> 
    some form fields here... 
<%= submit_tag('Next', :class => 'btn btn-primary') %></td> 

但是当我点击下一步按钮时,表单不会提交。令我惊讶的是,当我删除:id和:remote属性时,表单提交没有问题(但是页面重新加载了我不想要的内容)。

目标:我想使用ajaxForm()提交表格来处理回拨,即$("#myForm").ajaxForm()。所以我需要:remote属性,我还需要识别我的表单(使用:id属性)。

为什么我的表单不包含:id:remote属性?

我正在使用rails 3.2.8和jquery-rails。

在此先感谢。

回答

2

将远程添加到表单标记意味着它将使用JS发送请求。

所以它实际上是提交表单,但它并没有以预期的方式提交。 在你的控制器中添加以下内容:

respond_to do |format| 
    format.js 
    format.html 
end 

,你将能够对这一要求的地方回应file.js.erb在你的意见,并把所需的js代码来完成请求。

希望有所帮助。

+0

我喜欢这个答案。让我们看看它是否能解决这个家伙的问题。 –

+0

@AlSayed Gamal是的我认为这是我需要的,但是我的股票在这里。如果用户点击下一步,我想通过ajax提交表单,并且响应将是一个html表单,即我想再次显示表单。它的网络考试应用程序正在开发中,所以如果用户点击下一个,我会提交表单(通过ajax)并在下一个问题中再次显示表单。所以我将这个<%= redirect_to exam_question_path(@exam,@next_question)%>放在我的show.js.erb中以重定向到下一个问题。但它不起作用 – alfu

+0

redirect_to在视图中不起作用,它只在控制器中起作用。您可以使用javascript重定向: location.href =