Hey guys I am trying integrate Mailchimp API using gibbon gem but I keep getting an error undefined method
save'`.
My controller code:
class LandingPageController < ApplicationController
layout 'landing_page'
def index
@subscriber = Subscriber.new
end
def create
# Instantiate a new object using form parameters
@subscriber = Subscriber.new(subscriber_params)
# Save the object
if @subscriber.save
@subscriber.valid?
@subscriber.subscribe
# If save succeeds, redirect to the index action
flash[:notice] = "Thank You for subscribing. Your Email ID has been entered successfully into our database."
redirect_to(:action => 'index')
else
# If save fails, redisplay the form so user can fix problems
render('index')
end
end
private
def subscriber_params
# same as using "params[:subject]", except that it:
# - raises an error if :subject is not present
# - allows listed attributes to be mass-assigned
params.require(:subscriber).permit(:email)
end
end
This was working perfectly before started the integration.
So to debug the error I removed the @subscriber.save
to see what happens. Then I get a new error uninitialized constant Gibbon::Request in subscriber.rb
.
My subscriber.rb code:
class Subscriber
include ActiveModel::Model
attr_accessor :email, :string
validates_presence_of :email
validates_format_of :email, with: /\A[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}\z/i
def subscribe
mailchimp = Gibbon::Request.new(api_key: Rails.application.secrets.mailchimp_api_key)
result = mailchimp.lists.subscribe({
:id => Rails.application.secrets.mailchimp_list_id,
:email => {:email => self.email},
:double_optin => false,
:update_existing => true,
:send_welcome => true
})
Rails.logger.info("Subscribed #{self.email} to MailChimp") if result
end
end
I have tried atleast a dozen different fixes. I have tried different versions of gibbon gem, nothing seems to work. I have tried hardcoding my API key instead of getting it from secrets.yml. I have run out of options now and other questions on google. There doesn't seem to be solution to my problem.
Would appreciate any help possible and let me know if you need any other code from my project.
Edit:
I was able to remove the undefined method save
error by adding ActiveRecord::Base
instead of include ActiveModel::Model
. But I still get the uninitialized constant Gibbon::Request
error.