我正在尝试设置一个简单的表单,用户在其电子邮件地址中键入以订阅简报。 然后,我会收到一封包含用户电子邮件地址的电子邮件。
这是我到目前为止所尝试的:
表格:
路线
post 'subscribe/:email', :to => 'welcome3#subscribe', as: "email_subscribtion"
控制器:
class Welcome3Controller < ApplicationController def subscribe EmailMeMailer.confirmation().deliver end end
邮件:
class EmailMeMailer < ApplicationMailer default from: "info@example.com" def confirmation @greeting = "Hi" mail to: "my_email_address@gmail.com", subject: "subscribtion confirmation" end end
JQuery Ajax方法:
$('#sub_form').submit(function(e) { e.preventDefault(); }).validate({ rules: { email: { required: true, email: true }, }, submitHandler: function (form) { var btn = $('#sub_btn'); btn.button('loading'); setTimeout(function() { btn.button('reset'); }, 3000); $.ajax({ type: 'POST', url: '/subscribe', // data: form.serialize(), dataType: 'json', async: true, data: { csrfmiddlewaretoken: '{{csrf_token}}', sub_email: $('#sub_email').val(), }, success: function (json) { $('#sub_output').html(json.message); $("#sub_email").prop('disabled', true); } }); return false; // for demo } });
我坚持:如何捕获提交的电子邮件地址并将其发送给自己? 我没有使用任何模型来保存数据。 此外,根据本教程,Mailer无权访问POST请求。
请记住,我正在将Django应用程序转换为RoR,以便我可以在cPanel上部署它。 你可以在这里看到Django应用程序:表单在页脚中。
这是观点:
Welcome3#subscribe
Find me in app/views/welcome3/subscribe.html.erb
编辑:
另外,在我的Django应用程序中,我发送到此URL:
url: '/subscribe/' data: { csrfmiddlewaretoken: '{{csrf_token}}', email: $('#sub_email').val(), },
如何在Rails中有所不同?
这是一起的JQuery Ajax请求
submitHandler: function (form) { var btn = $('#sub_btn'); btn.button('loading'); setTimeout(function() { btn.button('reset'); }, 3000); $.ajax({ type: 'POST', url: '/subscribe/', // data: form.serialize(), dataType: 'json', async: true, data: { csrfmiddlewaretoken: '{{csrf_token}}', email: $('#sub_email').val(), }, success: function (json) { $('#sub_output').html("Thanks"); $("#sub_email").prop('disabled', true); } }); return false; }
编辑2:
在此阶段,当我单击订阅按钮时,我收到此路由错误:
路由错误没有路由匹配[POST]“/”
Rails.root:C:/ Sites / payligent
应用程序跟踪| 框架跟踪| 完整跟踪路由
路由从上到下优先匹配
帮助程序HTTP谓词路径控制器#操作路径/ URL路径匹配root_path GET / welcome #index
package_signup_path GET /pricing/:level(.:format)welcome2#pricing
email_subscribtion_path GET /subscribe/:email(.:format)welcome3#subscribe
您可以在控制器中获取发布数据,并将其作为参数传递给邮件程序操作。
编辑:上面的解决方案在这里工作。
HTML:
<%= form_for :subscribe, html: { id: 'sub_form' } do |f| %>
<% end %>
使用Javascript:
控制器(app / controllers / welcome3_controller.rb)
class Welcome3Controller < ApplicationController def subscribe EmailMeMailer.confirmation(params[:sub_email]).deliver_now respond_to do |format| format.json { head :ok } end end end
PS: .deliver
方法在v2.3.8之后已弃用 。 您应该使用.deliver_now
而不是它。
梅勒:(app / mailers / email_me_mailer.rb)
class EmailMeMailer < ApplicationMailer default from: "info@example.com" def confirmation(email) @greeting = "Hi" @email = email mail to: "my_email_address@gmail.com", subject: "subscribtion confirmation" end end
邮件程序视图:(app / mailers / email_me_mailer.rb)
Email: <%= @email %>
路由:(config / routes.rb)
post '/subscribe' => 'welcome3#subscribe'
PS:
1)不要忘记在app/views/layouts/mailer.text.erb
上生成邮件程序布局。
2)请记住,布局和视图的扩展取决于您在邮件程序中定义的内容类型。 如果是文本(默认),则文件扩展名为.text.erb
,如果是HTML,则文件将具有.html.erb
。
以上就是jQuery教程分享如何捕获表单值并通过电子邮件作为ajax请求发送它们? 轨道相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/jquerytutorial/558594.html