2012-08-25 41 views
0

在我的应用程序中,我有一个表单,它有两个提交:一个是典型的提交按钮,它创建一个对象并将用户重定向到它。另一个旨在用作“保存并继续”按钮,该按钮可远程创建对象,显示成功闪光,并清除表单而不会将用户发送到其他页面。Rails 3下的混合远程和非远程表格

这可能如何实现?我大致熟悉AJAX和jQuery,并且还有其他一些表单在整个网站中使用它,但我找不到创建混合表单的方法。

回答

0

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再次用一个新对象来清除表单,在实际的代码中,我也做了一个闪烁的表示,这个新的对象已经创建了。

1

不是一个漂亮的方法,但这个工程。在你的控制你的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]存储串的提交按钮,这样你就可以用它来建立一个混合形式。