Comment enregistrer les courriels aux abonnés avec la case à cocher?

Lorsque la case est cochée, comment puis-je ajouter le courrier électronique de l'utilisateur à «Entrez le courrier électronique» dans ma liste d'abonnés de mailchimp en cliquant sur Enregistrer?

Entrez la description de l'image ici

User / new.html.erb

<%= form_for(@user) do |f| %> <%= f.email_field :email, placeholder: 'Enter Email' %> <%= f.check_box ????? %> Get blog posts from Anthony Galli, CEO & Founder about conquering challenges in life & business! <% end %> 

En dehors du processus d'inscription, les personnes peuvent s'abonner en introduisant leur courrier électronique dans les souscriptions / subscribe.html.erb .

 <!-- MailChimp Signup Form --> <link href="//cdn-images.mailchimp.com/embedcode/classic-081711.css" rel="stylesheet" type="text/css"> <div id="mc_embed_signup"> <form action="//anthonygalli.us8.list-manage.com/subscribe/post?u=3e4b26579d28ecaf37fe444e4&amp;id=3dbb9c5c12" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> <input type="email" value="" name="EMAIL" class="required email" placeholder="Enter Email" id="mce-EMAIL"> <input type="text" name="b_3e4b26579d28ecaf37fe444e4_3dbb9c5c12" tabindex="-1" value=""> <input type="submit" value="Save" name="subscribe" id="mc-embedded-subscribe" class="button"> </form> </div> <script type='text/javascript' src='//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'></script><script type='text/javascript'>(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';}(jQuery));var $mcj = jQuery.noConflict(true);</script> 

Le formulaire est soumis à votre application. Vous pouvez donc utiliser l'API Mailchimp pour ajouter l'utilisateur à une liste. Il existe plusieurs gemmes API Mailchimp. Je viens de choisir un hasard:

Vérifiez ici comment configurer l'API https://github.com/amro/gibbon

Contrôleur d'inscription

 def create @user = User.new(user_params) if @user.save subscribe_to_newsletter(@user) redirect_to ... else ... end end private def subscribe_to_newsletter(user) gibbon.lists(list_id).members.create(body: {email_address: user.email, status: "subscribed", merge_fields: {FNAME: user.first_name, LNAME: user.last_name}}) end 

Maintenant, cela pourrait prendre du temps. Si c'est le cas, vous voudrez peut-être le déplacer vers un travail en arrière-plan. Peut-être aussi déplacer l'intégralité du code Mailchimp dans un objet de service afin qu'il soit correctement encapsulé.