在我看来,我有一个主要表格
<%= 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
之后打开模式。
表单属于不同的控制器。
我是否采取了良好的方式?
答案 0 :(得分:1)
一般来说,让模态提交主表单是混乱的。举个例子:如果主表单上有错误,你会怎么做?据推测,主窗体保存了项目的父表格,因此如果您无法从主窗体创建模型,则无需挂起项目。但是用户处于模态中,那么他将如何修复主表单上的项目?
一种替代方法可能是在主窗体变脏时禁用模态链接。另一种方法是在模型是新的时禁用它,但在编辑时启用 - 这将允许保存模态的项目,并且模态不需要保存主窗体。
答案 1 :(得分:0)
您可以将submit用于第二种表单。我不确定您的商品/表单的名称究竟是什么,因此您必须更改其表单名称ID。 让我们尝试这样做。
$("#comparison").submit(function( event ) {
$(".main-form").submit();
event.preventDefault();
});