在我的应用程序中,我有一个表单,它有两个提交:一个是典型的提交按钮,它创建一个对象并将用户重定向到它。另一个旨在用作“保存并继续”按钮,该按钮可远程创建对象,显示成功闪光,并清除表单而不会将用户发送到其他页面。Rails 3下的混合远程和非远程表格
这可能如何实现?我大致熟悉AJAX和jQuery,并且还有其他一些表单在整个网站中使用它,但我找不到创建混合表单的方法。
在我的应用程序中,我有一个表单,它有两个提交:一个是典型的提交按钮,它创建一个对象并将用户重定向到它。另一个旨在用作“保存并继续”按钮,该按钮可远程创建对象,显示成功闪光,并清除表单而不会将用户发送到其他页面。Rails 3下的混合远程和非远程表格
这可能如何实现?我大致熟悉AJAX和jQuery,并且还有其他一些表单在整个网站中使用它,但我找不到创建混合表单的方法。
MurifoX的回答是正确的。这里的东西就像我所做的:
if @model.save
if params[:commit] == "Save"
render js: %(window.location.pathname='#{object_path @object}')
elsif params[:commit] == "Save and Continue"
respond_to do |format|
format.js do
@object = Object.new
render 'new'
end
end
end
end
基本上,形式已经远程设置为true,jQuery.ajaxSetup({ 正确响应AJAX请求( 'beforeSend':函数(XHR){xhr.setRequestHeader(”接受“,”text/javascript“)}也被使用)如果点击”保存“,浏览器通过JavaScript被重定向到适当的页面,如果点击”保存并继续“,则相同的_partial.js.erb用于加载表单,首先用AJAX再次用一个新对象来清除表单,在实际的代码中,我也做了一个闪烁的表示,这个新的对象已经创建了。
不是一个漂亮的方法,但这个工程。在你的控制你的create
动作,当你完成,保存记录,你可以把一些有条件的逻辑来实现不同的重定向这样的:
respond_to do |format|
if @model.save
if params[:commit] == "Save"
# Redirect to saved object
elsif params[:commit] == "Save and Continue"
# Redirect to other places
end
end
end
的params[:commit]
存储串的提交按钮,这样你就可以用它来建立一个混合形式。