Guest User

Untitled

a guest
Aug 21st, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. class NotebooksController < ApplicationController
  2. before_action :set_notebook, only: [:update, :destroy]
  3.  
  4. after_action only: [:index] { set_pagination_headers :notebooks }
  5.  
  6. def index
  7. @notebooks = Notebook.page(page).per(per_page)
  8.  
  9. render json: @notebooks
  10. end
  11.  
  12. private
  13. def set_notebook
  14. @notebook = Notebook.find(params[:id])
  15. end
  16.  
  17. def notebook_params
  18. params.require(:notebook).permit!
  19. end
  20.  
  21. def page
  22. @page ||= params[:page] || 1
  23. end
  24.  
  25. def per_page
  26. @per_page ||= params[:per_page] || 40
  27. end
  28.  
  29. def set_pagination_headers(v_name)
  30. pc = instance_variable_get("@#{v_name}")
  31.  
  32. headers["X-Total-Count"] = pc.total_count
  33.  
  34. links = []
  35. links << page_link(1, "first") unless pc.first_page?
  36. links << page_link(pc.prev_page, "prev") if pc.prev_page
  37. links << page_link(pc.next_page, "next") if pc.next_page
  38. links << page_link(pc.total_pages, "last") unless pc.last_page?
  39. headers["Link"] = links.join(",") if links.present?
  40. end
  41.  
  42. def page_link(page, rel)
  43. base_uri = request.url.split("?").first
  44.  
  45. end
  46. end
Add Comment
Please, Sign In to add comment