【问题标题】:Rails: Change form action from submit_tagRails:从 submit_tag 更改表单操作
【发布时间】:2011-05-14 21:53:53
【问题描述】:

我有一个表单,它总是将表单提交给控制器中的“更新”功能,我使用“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 请求总是调用相同的“更新”函数。

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

【问题讨论】:

  • 您能发布您的查看代码吗?此外,您正在使用的 Rails 版本...form_remote_for 在 Rails 3 中已弃用
  • 我使用的是Rails 3.0.0版本,我的视图代码如下。 company_provider_path(@company), :method => :put do |provider_form| %>。在这个表单中,我使用 AJAX 调用来更新表单值,现在我想将相同的详细信息传递给另一个函数进行验证。我使用了标签 ' "page_level_validation" , :action=>"validate"%>' 但它也通过 AJAX 将详细信息传递给相同的“更新函数”。跨度>
  • 所以问题出在 remote_form_for 我在 rails 3 中使用。那么我应该用什么来代替它呢?我已经在这个表单中写了很多功能。我的表单更改是否也会影响功能?

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


【解决方案1】:

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

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

例如..

<% 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

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

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-31
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多