Rails:表单中的两个不同的提交按钮

时间:2012-06-22 15:16:56

标签: ruby-on-rails ruby form-for

我正在尝试使用两个不同的提交按钮创建一个简单的表单:一个将执行正常提交,另一个将执行ajax提交并呈现部分。但我不确定如何做到这一点,因为两者都采取相同的创造行动。我试过这样的事情:

/views/layouts/_form.html.erb:

<div id="theform">
<%= form_for(@user, :remote => true, :form_to_validate => 'user') do |f| %>

    Name: <div id='name'><%= f.text_field :name %></div><br/>
    Email: <div id='email'><%= f.text_field :email %></div><br/>
    Phone Number: <div id='phone_number'><%= f.text_field :phone_number%></div><br/>
    <%= f.submit "Normal Submit", name:'normal' %>
    <%= f.submit "Ajax Submit" %>

<% end %>
</div>

应用程序/控制器/ user_controller.rb:

class UsersController < ApplicationController

def new
    @user = User.new
end

def create
    @user = User.new(params[:user])
    if params[:normal]
        render :partial => "layouts/user"
    end
end
编辑:这似乎是一项奇怪的任务,但这是一项赋予我的任务,证明我可以双管齐下。我知道如何单独进行AJAX提交和正常提交,但我的困惑是在表单中有两个提交! :)

2 个答案:

答案 0 :(得分:1)

为什么不编写一些侦听点击或提交的JS,如果它的ajax $ .ajax到ajax位置,则将其路由到JS中,否则让它正常通过,如果它不是并且不停止传播。

答案 1 :(得分:0)

我认为你不需要两个提交按钮。让ajax按钮只需调用$ .ajax方法并发送数据。

或者,在将表单转换为ajax后,您可以使用ajax按钮调用$('#formid').submit(),使用您使用的任何方法。这可能是两种方法中比较容易的。