Javascript 带有param的Rails远程窗体
我现在有一张表格Javascript 带有param的Rails远程窗体,javascript,ruby-on-rails,ajax,ruby-on-rails-5,sweetalert,Javascript,Ruby On Rails,Ajax,Ruby On Rails 5,Sweetalert,我现在有一张表格 <%= form_for @emailer, :remote => true do |f| %> <%= f.email_field :email, placeholder: "Email" %> <%= f.submit "Send" %> <% end %> 它正在工作,但是表单当然不会接收任何电子邮件,因此不会创建新的电子邮件发送程序 如何通过在弹出窗口中发送电子邮件字段的值来提交表单? 像 使用可能的解决方
<%= form_for @emailer, :remote => true do |f| %>
<%= f.email_field :email, placeholder: "Email" %>
<%= f.submit "Send" %>
<% end %>
它正在工作,但是表单当然不会接收任何电子邮件,因此不会创建新的电子邮件发送程序
如何通过在弹出窗口中发送电子邮件字段的值来提交表单?
像
使用可能的解决方案进行编辑:
我真的试过了
if (email) {
form = $("#new_emailer")[0]
$('#emailer_email').val(email) // this is the email field of the form
Rails.fire(form, 'submit');
}
它工作正常,但我不确定这是否是最好的解决方案。我发现您的代码中没有idsubscriber\u email
的元素。另外,当您尝试炸提交事件时,是否会有多个id为“new_emailer”的元素Rails.fire(form,'submit')
如果email字段有一个值(看起来像是您在设置它,但ID让我感到困惑),则确实应该将表单与电子邮件一起发送。@arieljuod抱歉,刚刚编辑过。该代码正在运行,并使用正确的电子邮件发送表单。但我想知道是否有其他方法可以代替手动“黑客”电子邮件字段。有些人认为像Rails.fire(表单,email_值,'submit')如果我理解正确,问题不是rails的远程表单,而是js弹出插件。我想你是在用弹出窗口询问用户电子邮件,但是你显示的是一个now字段,它不是实际表单的电子邮件字段,因此你必须在之后手动设置实际表单字段。但我知道这就是插件的工作原理,它让你要求一个值,但它只返回值,你必须设置它的位置。我不认为有更简单的方法可以做到这一点,fire
是在元素上触发事件的通用方法,而不是针对表单的特定方法,因此参数没有特殊语法。如果您有该控件,可以尝试在弹出的电子邮件字段中使用“form”属性,但我不确定调用fire方法时该字段是否仍在DOM上,因为弹出窗口可能会消失,我不会使用此选项,它可以为您节省一些行,但手动设置值更能防止错误。我在您的代码上没有看到id为subscriber\u email
的元素。另外,当您尝试炸提交事件时,是否会有多个id为“new_emailer”的元素Rails.fire(form,'submit')
如果email字段有一个值(看起来像是您在设置它,但ID让我感到困惑),则确实应该将表单与电子邮件一起发送。@arieljuod抱歉,刚刚编辑过。该代码正在运行,并使用正确的电子邮件发送表单。但我想知道是否有其他方法可以代替手动“黑客”电子邮件字段。有些人认为像Rails.fire(表单,email_值,'submit')如果我理解正确,问题不是rails的远程表单,而是js弹出插件。我想你是在用弹出窗口询问用户电子邮件,但是你显示的是一个now字段,它不是实际表单的电子邮件字段,因此你必须在之后手动设置实际表单字段。但我知道这就是插件的工作原理,它让你要求一个值,但它只返回值,你必须设置它的位置。我不认为有更简单的方法可以做到这一点,fire
是在元素上触发事件的通用方法,而不是针对表单的特定方法,因此参数没有特殊语法。如果您有该控件,可以尝试在弹出的电子邮件字段中使用“form”属性,但我不确定调用fire方法时字段是否仍在DOM上,因为弹出窗口可能会消失,我不会使用此选项,它可以为您节省一些行,但手动设置值更能防止错误。
Rails.fire(form, email, 'submit');
if (email) {
form = $("#new_emailer")[0]
$('#emailer_email').val(email) // this is the email field of the form
Rails.fire(form, 'submit');
}