Фильтрация / сортировка и отображение коллекций по типу в Samvera Hyrax - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь настроить домашнюю страницу Samvera Hyrax, я хочу отображать только данные из 2 типов коллекций на домашней странице при входе в систему. Я имитировал способ отображения последних документов и внес некоторые изменения в домашний контроллер , _home_content, создал новые файлы в представлениях.

_home_content.html.erb
     <hr>
     <div class="row">
       <div class="col-md-6 col-sm-12">
         <h1>Browse certain type of collections</h1> <div class="jumbotron" style="height:600px"><%= render 'modern_collection', modern_documents: @modern_documents%> </div>
         <div class="jumbotron" style="height:250px">
         </div>
       </div>
       <div class="col-md-6 col-sm-12">
         <h1>Browse Historical collections</h1>
         <div class="jumbotron" style="height:400px">
         </div>
       </div>
       </div>
    <div>

_modern_collection.html.erb

<h2 class="sr-only"><%= t('hyrax.homepage.modern_collection.title') %></h2>
<% if modern_documents.blank? %>
  <p><%= t('.no_public') %></p>
<% else %>
  <div id="recent_docs">
    <ol class="list-group list-group-striped recent_uploads">
      <%= render partial: "modern_collections", collection: modern_documents %>
    </ol>
  </div>
<% end %>

_modern_collections.html.erb
<li class="recent-item">
    <div class="row">
      <div class="col-sm-12">
        <span class="sr-only"><%= t('hyrax.homepage.modern_collection.document.title_label') %></span>
        <h3>
          <%= link_to [main_app, modern_collections] do %>
            <%= render_thumbnail_tag(modern_collections, {width: 90}, {suppress_link: true}) + modern_+collections.to_s %>
          <% end %>
        </h3>
        <p class="recent-field">
          <span class="recent-label"><%= t('hyrax.homepage.modern_collection.document.depositor_label') %>:</span> <%= link_to_profile modern_collection.depositor(t('hyrax.homepage.modern_collecti$
        </p>
        <p class="recent-field">
          <span class="recent-label"><%= t('hyrax.homepage.modern_collection.document.keyword_label') %>:</span> <%= link_to_facet_list(modern_collection.keyword, 'keyword', t('hyrax.homepage.mode$
        </p>
      </div>
    </div>
</li>

homepage_controller.rb
class Hyrax::HomepageController < ApplicationController
  # Adds Hydra behaviors into the application controller
  include Blacklight::SearchContext
  include Blacklight::SearchHelper
  include Blacklight::AccessControls::Catalog

  # The search builder for finding recent documents
  # Override of Blacklight::RequestBuilders
  def search_builder_class
    Hyrax::HomepageSearchBuilder
  end

  class_attribute :presenter_class
  self.presenter_class = Hyrax::HomepagePresenter
  layout 'homepage'
  helper Hyrax::ContentBlockHelper

  def index
    @presenter = presenter_class.new(current_ability, collections)
    @featured_researcher = ContentBlock.for(:researcher)
    @marketing_text = ContentBlock.for(:marketing)
    @featured_work_list = FeaturedWorkList.new
    @announcement_text = ContentBlock.for(:announcement)
    recent
    modern
  end

  private

    # Return 5 collections
    def collections(rows: 5)
      builder = Hyrax::CollectionSearchBuilder.new(self)
                                              .rows(rows)
      response = repository.search(builder)
      response.documents
    rescue Blacklight::Exceptions::ECONNREFUSED, Blacklight::Exceptions::InvalidRequest
      []
    end

   def recent
      # grab any recent documents
      (_, @recent_documents) = search_results(q: '', sort:'', rows: 4)
    rescue Blacklight::Exceptions::ECONNREFUSED, Blacklight::Exceptions::InvalidRequest
      @recent_documents = []
    end
    def modern
      # grab modern collection_type documents
      (_, @modern_documents) = search_results(q: '', sort: collection_type, rows: 4)
    rescue Blacklight::Exceptions::ECONNREFUSED, Blacklight::Exceptions::InvalidRequest
      @modern_documents = []
    end

    def sort_field
      "#{Solrizer.solr_name('date_uploaded', :stored_sortable, type: :date)} desc"
    end

    def collection_type
      "#{Solrizer.solr_name('modern', :stored_sortable)}"
    end


end

Нужно ли редактировать другие файлы? Я не получаю никакой ошибки, я просто выкидываю «no_public data», что означает, что я не получаю никаких коллекций из базы данных.

PS: я новичок в среде ruby ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...