Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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
Ruby on rails 3 通过多个部分提交表单_Ruby On Rails 3_Jquery - Fatal编程技术网

Ruby on rails 3 通过多个部分提交表单

Ruby on rails 3 通过多个部分提交表单,ruby-on-rails-3,jquery,Ruby On Rails 3,Jquery,我有一个很长的表格,我想分成5个部分。当用户点击每个部分底部的“Next”时,我想使用AJAX加载下一部分,直到最后一部分将整个表单提交到数据库中。此外,如果用户点击“Previous”,我需要用用户先前填写的内容填充字段 到目前为止,我有一个不起作用的方法: users/new.html.erb <%= form_for(@user, :html => { :class => "form-horizontal" }, remote: true) do |f| %> ..

我有一个很长的表格,我想分成5个部分。当用户点击每个部分底部的“Next”时,我想使用AJAX加载下一部分,直到最后一部分将整个表单提交到数据库中。此外,如果用户点击“Previous”,我需要用用户先前填写的内容填充字段

到目前为止,我有一个不起作用的方法:

users/new.html.erb

<%= form_for(@user, :html => { :class => "form-horizontal" }, remote: true) do |f| %>
...
<%= f.submit "Next" %>
  def create
    @user = User.new(params[:user])
    if @user.save
      respond_to do |format|
        format.html { flash[:success] = "Welcome to Friends First!"
                  redirect_to @user }
        format.js
      end
    else
      render :new
    end
  end
$("#site_content").html("<%= escape_javascript(render('layouts/partial2')) %>");
create.js.erb

<%= form_for(@user, :html => { :class => "form-horizontal" }, remote: true) do |f| %>
...
<%= f.submit "Next" %>
  def create
    @user = User.new(params[:user])
    if @user.save
      respond_to do |format|
        format.html { flash[:success] = "Welcome to Friends First!"
                  redirect_to @user }
        format.js
      end
    else
      render :new
    end
  end
$("#site_content").html("<%= escape_javascript(render('layouts/partial2')) %>");
$(“#站点内容”).html(“”);

我会将5个部分中的每一部分放在单独的div(display:none)中,只显示(display:block)第一部分。当用户单击“下一步”时,我将显示第二步,等等。也可以通过jquery完成对创建操作的最终提交

$.ajax(
  url: '/users',
  type: 'post',
  data: $("form").serialize()
)
我希望这会有帮助