Rails通过弹出窗口发送电子邮件

时间:2019-07-31 14:15:48

标签: ruby-on-rails

我创建了一个表单,其中包含一个字段,该字段使onclick()导致打开弹出窗口(邀请导入程序)。

在此弹出窗口中,客户必须输入某些信息,并且在输入该信息时,我希望保存所有信息,并希望使用输入的电子邮件触发电子邮件。当我单击提交时,所有这些都应该发生(在下图中显示为“ Speichern”)。

我该怎么办?

我已经考虑过创建2种表单。一个弹出窗口,另一个弹出窗口,但是“提交”按钮将导致两个都被提交。

我如何保存和提交带有弹出窗口的电子邮件,而无需提交其他表单。

pop up to send email

1 个答案:

答案 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!');