我创建了一个表单,其中包含一个字段,该字段使onclick()导致打开弹出窗口(邀请导入程序)。
在此弹出窗口中,客户必须输入某些信息,并且在输入该信息时,我希望保存所有信息,并希望使用输入的电子邮件触发电子邮件。当我单击提交时,所有这些都应该发生(在下图中显示为“ Speichern”)。
我该怎么办?
我已经考虑过创建2种表单。一个弹出窗口,另一个弹出窗口,但是“提交”按钮将导致两个都被提交。
我如何保存和提交带有弹出窗口的电子邮件,而无需提交其他表单。
答案 0 :(得分:1)
确保第二个表单的html不在主表单内。那会引起问题。您可能还希望模式形式为remote: true
,以便将其通过AJAX提交。代替:
<%= form_for @model do |form| %>
...
<%= form.text_field :foo, onclick: 'openEmailModal()' %>
<div class="modal etc" id="email-modal">
<%= form_for @email do |form2| %>
...
<% end %>
</div>
<% end %>
您将拥有:
<%= form_for @model do |form| %>
...
<%= form.text_field :foo, onclick: 'openEmailModal()' %>
<% end %>
<div class="modal hide etc" id="email-modal">
<%= form_for @email, remote: true do |form| %>
...
<% end %>
</div>
例如,您可以在视图中创建一个名为create.js.erb的文件,该文件将执行以下操作:
closeEmailModal(); // this is just straight javascript
$('#notices').html("<%= escape_javascript(render 'my_partial') %>"); // reuse html your partials in JS
$('#notices').html("<%= j(render 'my_partial') %>"); // or use j (it's an alias for escape_javascript)
alert('I did stuff!');