Class: Concepts::AlphabeticalController

Inherits:
ConceptsController
  • Object
show all
Includes:
DatasetInitialization
Defined in:
app/controllers/concepts/alphabetical_controller.rb

Direct Known Subclasses

ExpiredController

Instance Method Summary collapse

Methods included from DatasetInitialization

#datasets_as_json, #init_datasets

Instance Method Details

#indexObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'app/controllers/concepts/alphabetical_controller.rb', line 22

def index
  authorize! :read, Concept::Base

  redirect_to(url_for :prefix => "a") unless params[:prefix]

  datasets = init_datasets

  if dataset = datasets.detect {|dataset| dataset.name == params[:dataset] }
    @search_results = dataset.alphabetical_search(params[:prefix], I18n.locale) || []
    @search_results = Kaminari.paginate_array(@search_results).page(params[:page])
  else
    @search_results = find_labelings

    # When in single query mode, AR handles ALL includes to be loaded by that
    # one query. We don't want that! So let's do it manually :-)
    includes = Iqvoc::Concept.base_class.default_includes
    if Iqvoc::Concept.note_classes.include?(Note::SKOS::Definition)
      includes << Note::SKOS::Definition.name.to_relation_name
    end
    ActiveRecord::Associations::Preloader.new(@search_results, :owner => includes).run

    @search_results.map! { |pl| AlphabeticalSearchResult.new(pl) }
  end

  respond_to do |format|
    format.html { render :index, :layout => with_layout? }
  end
end