Rails:从submit_tag更改表单操作

时间:2010-11-24 05:52:05

标签: ruby-on-rails ajax action remote-forms

我有一个表单总是将表单提交给控制器中的“更新”功能,我使用“remote_form_for”标签创建了这个表单。在这个表单中,我有来自不同表的对象,从这个表单我想通过AJAX请求将整个表单数据提交给另一个函数(而不是“更新”函数)。

我尝试了很多方法,包括使用提交标记和操作

<% remote_form_for @employee, :url => organization_employee_path(@organization, @employee), :method => :put do |employee_form| %>
  // form objects and other functionalities
     ....
     ....  
         // views inside the forms
         <div id="employee_header_div">
           <%= render :partial => "employee_header", :locals => {:employee => @employee} %>
         </div>
         ...
         ... 
     <%= submit_tag "page_level_validation", :id => "page_level_validation" , :action=>"validate"%>
 <% end %>

但是Ajax请求总是调用相同的“更新”功能。

如果有人帮助解决此问题,那将非常有帮助。

2 个答案:

答案 0 :(得分:0)

您不能将提交设置为指向与主窗体指定的位置不同的位置(除非您要使用HTML5格式属性并处理浏览器兼容性后果)。

但是,你可以做的是在你的控制器中创建一个新的动作来处理这种情况。

例如..

<% remote_form_for @employee, :url => organization_employee_validate_path(@organization, @employee), :method => :put do |employee_form| %>
控制器中的

def validate
    #do something loosely based around the update method
end

不要忘记添加适当的路线。

答案 1 :(得分:-1)

试试这个:

<% form_for @employee, :remote => true, :url => organization_employee_path(@organization, @employee), :method => :put do |employee_form| %>