class Api::SearchController

Public Instance Methods

autocomplete() click to toggle source

Autocomplete method for searching categories, courses, subjects, tutors and students.

# File app/controllers/api/search_controller.rb, line 3
def autocomplete
  params[:page] ||= 1
  params[:query] ||= ''
  params[:per_page] = 10
  if params[:search_what] == 'category'
    @categories = Category.search(params).page(params[:page]).per(params[:per_page]).records
    respond_to do |format|
      format.json { render :json => @categories}
    end
  elsif params[:search_what] == 'term'
    @courses = Course.search(params).page(params[:page]).per(params[:per_page]).records
    @subjects = Subject.search(params).page(params[:page]).per(params[:per_page]).records
    @tutors = Tutor.search(params).page(params[:page]).per(params[:per_page]).records
    @tutors = @tutors.map {|t| t.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :tutor)}
    @students = Student.search(params).page(params[:page]).per(params[:per_page]).records
    @students = @students.map {|s| s.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :student)}

    respond_to do |format|
      format.json { render :json => @subjects + @courses + @tutors + @students }
    end
  else
    @tutors = Tutor.search(params).page(params[:page]).per(params[:per_page]).records
    @tutors = @tutors.map {|t| t.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :tutor)}
    @students = Student.search(params).page(params[:page]).per(params[:per_page]).records
    @students = @students.map {|s| s.serializable_hash(only: [:id, :name, :email], methods: [:full_name]).merge(_type: :student)}
    @mentors = Mentor.search(params).page(params[:page]).per(params[:per_page]).records
    @courses = Course.search(params).page(params[:page]).per(params[:per_page]).records
    @subjects = Subject.search(params).page(params[:page]).per(params[:per_page]).records
    respond_to do |format|
      format.json { render :json => @courses + @subjects + @tutors + @mentors + @students }
    end
  end
end