Friday, 4 May 2018

Tasks: Need to display mailchimp emails by using API with Pagination


gem 'gibbon'

your_app/config/initializers/gibbon.rb

Gibbon::Request.api_key = "12bfe8bed564a0a4e6b6250baa8f4c51-us14"
Gibbon::Request.timeout = 15
Gibbon::Request.open_timeout = 15
Gibbon::Request.symbolize_keys = true

Gibbon::Request.debug = false

app/controller :-

class HomeController < ApplicationController
  def index
  gibbon = Gibbon::Request.new(api_key: "12bfe8bed564a0a4e6b6250baa8f4c51-us14", debug: true)
  # members = gibbon.lists("5984a13076").members.retrieve
 
  @page = params[:page].present? ? params[:page].to_i : 1
  offset = (@page-1) * 50
  members =  gibbon.lists("5984a13076").members.retrieve(params: {"count": "50", "offset": offset.to_s, "status": "subscribed"})
  @contacts = members.body[:members]
  @total_pages = (members.body[:total_items]/50.0).ceil
  end
end
--------------------------------------------------------------------------------------------------------------------------

Views:-

<div class="row">
            <% @contacts.each do |contact| %>
            <div class="col-sm-3 text-left">
              <a href="mailto:<%= contact[:email_address] %>"><%= contact[:email_address] %></a>
            </div>
            <% end %>
        </div>
        <div class="row pull-right">
            <nav aria-label="Page navigation " >
          <ul class="pagination">
            <% if @page > 1 %>
            <li class="page-item"><a class="page-link" href="/home/index?page=<%=  @page -1%>">Previous</a></li>
            <% end %>
            <% (1..@total_pages).each do |page|%>
            <li class="page-item <%= @page== page ? 'active' : nil %>"><a class="page-link" href="/home/index?page=<%= page %>"><%= page %></a></li>
            <% end %>
            <% if @page < @total_pages%>
            <li class="page-item"><a class="page-link" href="/home/index?page=<%=  @page +1%>">Next</a></li>
            <% end %>
          </ul>
        </nav>
        </div>
-------------------------------------------------------------------------------------

<style type="text/css">
.pull-right{float: right;}
</style>

No comments:

Post a Comment