2016-11-23 3 views
1

Ich versuche einfach einen Abonnenten zu meinem Newsletter-Mailing-Liste, die ich auf Mailchimp mit dem after_create Rückruf eingerichtet haben.Rails 4: Versuchen, Abonnent zu Mailchimp-Liste auf erstellen hinzufügen

Ich bekomme einen Routing-Fehler "undefined Methode` after_create 'für Benutzer :: RegistrationsController: Class ", wenn ich versuche, zur" Benutzer/bearbeiten "-Seite zu gehen. Das ist, was ich habe:

registrations_controller.rb

after_create :add_newsletter_subscriber 

def create 
    # create method 
end 

private 

def add_newsletter_subscriber 
    mailchimp = Mailchimp::API.new(ENV['MAILCHIMP-API-KEY']) 
    mailchimp.lists.subscribe('[newsletter-list-id]', { 
    "email" => @user.email   
    }, 
    merge_vars: {"FIRSTNAME" => @user.first_name, 
        "LASTNAME" => @user.last_name} 
      ) 
end 

Für die add_newsletter_subscriber Methode, ich bin auf this documentation on mailchimp.

Antwort

0

Ihr Rückruf sollte in Ihrem ActiveRecord-Modell stattfinden, nicht in der Steuerung. Der Rückruf after_create ist nur in Ihren Modellen verfügbar.

Siehe http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

Es gibt auch Controller Rückrufe verfügbar

after_action, append_after_action, 
append_around_action, append_before_action, around_action 

http://api.rubyonrails.org/classes/AbstractController/Callbacks/ClassMethods.html

Aber in Ihrem Fall sollten Sie diesen Code in Ihre Benutzer-Modell bewegen.

+0

Vielen Dank für Ihre Antwort. Jetzt bekomme ich "undefined Methode 'email' für nil: NilClass" auf '@ user.email' – BB123

+0

In Ihrem Modell würden Sie nicht auf die Instanzvariable von @user verweisen. Stattdessen würden Sie 'self.email' verwenden –

+0

Aha! Danke, Jason. – BB123