Module: RansackAdvancedSearch::SavedSearchUtils

Extended by:
ActiveSupport::Concern
Defined in:
app/controllers/concerns/ransack_advanced_search/saved_search_utils.rb

Instance Method Summary collapse

Instance Method Details

#get_params_to_search(context) ⇒ Object

Return params of Saved Search or search form params



18
19
20
21
22
23
24
# File 'app/controllers/concerns/ransack_advanced_search/saved_search_utils.rb', line 18

def get_params_to_search(context)
  if params[:saved_search].present?
    @saved_search = SavedSearch.find_by(id: params[:saved_search], context: context)
  end
  return params[:q] if params[:use_search_params].present?
  params[:q] = @saved_search.try(:search_params) || params[:q]
end

#get_saved_searches(context) ⇒ Object

Get list of Saved Search by context



13
14
15
# File 'app/controllers/concerns/ransack_advanced_search/saved_search_utils.rb', line 13

def get_saved_searches(context)
  @saved_searches = SavedSearch.where(context: context)
end

#new_saved_search(params) ⇒ Object



45
46
47
48
49
50
# File 'app/controllers/concerns/ransack_advanced_search/saved_search_utils.rb', line 45

def new_saved_search(params)
  SavedSearch.new(
   context: params[:context], description: params[:description],
   search_params: params[:q]
  )
end

#perform_saved_searches_actions(context, params = {}) ⇒ Object

Perform saved searches actions to provide full functionality with one method



6
7
8
9
10
# File 'app/controllers/concerns/ransack_advanced_search/saved_search_utils.rb', line 6

def perform_saved_searches_actions(context, params={})
  get_saved_searches(context)
  save_or_update_saved_search(params.merge(context: context))
  get_params_to_search(context)
end

#save_or_update_saved_search(params) ⇒ Object

Save or update Saved Search



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/controllers/concerns/ransack_advanced_search/saved_search_utils.rb', line 27

def save_or_update_saved_search(params)
  if params[:save_new_search].present? || params[:save_search].present?
    if params[:save_new_search].present?
      @saved_search = new_saved_search(params)
    elsif params[:save_search].present? && params[:saved_search].present?
      @saved_search = update_saved_search(params)
    elsif params[:save_search].present?
      @saved_search = new_saved_search(params)
    end

    if @saved_search.save
      flash[:notice] = t('ransack.saved_search.save.success')
    else
      flash[:error] = t('ransack.saved_search.save.error')
    end
  end
end

#update_saved_search(params) ⇒ Object



52
53
54
55
56
57
# File 'app/controllers/concerns/ransack_advanced_search/saved_search_utils.rb', line 52

def update_saved_search(params)
  saved_search = SavedSearch.find_by(id: params[:saved_search], context: params[:context])
  saved_search.description = params[:description]
  saved_search.search_params = params[:q]
  saved_search
end