在提交第二个表单之前自动提交表单

时间:2015-10-10 13:32:43

标签: ruby-on-rails ruby-on-rails-4

在我看来,我有一个主要表格

<%= simple_form_for( [ @comparison, @value ], :html => {class: "main-form"} ) do |f| %>
 ...
 <%= f.button :submit, t('.values_form_submit'), class: "btn cta-little cta-little-yellow" %>
<% end %>

在相同的视图中,通过点击链接,我打开一个包含部分化形式的模态:

<div class="modal fade" id='<%= "editItem_#{item.id}" %>' tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
 ...
 <%= render partial: 'items/form', locals: { which_item: item, which_url: edit_comparison_item_path(@comparison, item), which_method: :get } %>
 ...
</div>

点击偏好表单提交按钮,我想自动提交&#39;提交第二个之前的主要表格。

我尝试用jquery做到这一点。

项/形式

<%= simple_form_for([ @comparison, which_item ], url: which_url, method: which_method, :html => { :class => "col-sm-10 col-sm-offset-1" }) do |f| %>
 <%= f.input :title %>
 <%= f.input :url, as: :url %>
 <div class="text-center">
  <%= f.button :submit, class: "btn cta-little cta-little-yellow my-button" %>
 </div>
<% end %>

脚本

$(document).ready(function() {

 $(".my-button").on("click", function(){
  $(".main-form").submit();
 });
});

但它不起作用:提交了偏化形式但主要形式不是。 我尝试在打开模态按钮onclick上调用脚本。在这种情况下,主表单已提交,但我不知道如何在redirect_to之后打开模式。

表单属于不同的控制器。

我是否采取了良好的方式?

2 个答案:

答案 0 :(得分:1)

一般来说,让模态提交主表单是混乱的。举个例子:如果主表单上有错误,你会怎么做?据推测,主窗体保存了项目的父表格,因此如果您无法从主窗体创建模型,则无需挂起项目。但是用户处于模态中,那么他将如何修复主表单上的项目?

一种替代方法可能是在主窗体变脏时禁用模态链接。另一种方法是在模型是新的时禁用它,但在编辑时启用 - 这将允许保存模态的项目,并且模态不需要保存主窗体。

答案 1 :(得分:0)

您可以将submit用于第二种表单。我不确定您的商品/表单的名称究竟是什么,因此您必须更改其表单名称ID。 让我们尝试这样做。

$("#comparison").submit(function( event ) {
  $(".main-form").submit();
  event.preventDefault();
});