当我点击保存按钮时,表单未提交,我的代码可能出错?请提前感谢。我使用的是Rails 3.1
FORM
<%=form_for :user ,:remote=>true do |f|%>
<%= f.label :school %>
<%= f.text_field :school,:size=>"45",:class=>"round",:id=>"school" %>
<%= f.submit "save and continue",{:class=>"savebutton" }%>
<%end%>
JQUERY(的application.js)
$(".savebutton").bind('click',function() {
$('form').submit(function() {
var formToSubmit = $(this).serialize();
$.ajax({
url: $(this).attr('action'),
data: formToSubmit,
dataType: "JSON"
});
return false;
});
});
CONTROLLER
class SchoolController < ApplicationController
respond_to :json
def create
@school = current_user.schools.build(params[:school].merge(:user => current_user))
@school = current_user.school.build(params[:school].merge(:user => current_user))
if @school.save
respond_with @school
else
respond_with @school.errors, :status => :unprocessable_entity
end
end
end
答案 0 :(得分:1)
如果您想使用ajax,则需要在:remote => true
中添加form_for
,如果您的表单有{{1},则无需显式调用$.ajax
。 }。阅读this以获取有关如何在Rails应用程序中使用AJAX的优秀教程。
答案 1 :(得分:1)
@ vinceh的回答肯定是你应该这样做的方式,你仍然可以 以老式的方式做到这一点。
.submit()
方法不会提交表单(您可能认为它会这样做),而是将表单的submit
事件绑定到您提供的方法。所以现在,当你点击提交按钮时,它所做的只是设置回调,但是你return false
,所以表格实际上从未提交过。
你应该能够摆脱周围的$('.savebutton).click(...)
处理程序,并将$('form').submit(...)
处理程序直接放在你的javascript中,这样当页面加载时,立即注册回调。您无需担心具体处理.savebutton
点击。
此外,您的Ajax请求可能需要type: 'POST'
或type: 'PUT'
,因为$.ajax
默认为GET请求。