سؤال

Whenever Solr fails executing a query for some reason it returns an error message and an error code. I would like to handle such errors in Blacklight. Right now, when receiving an error from Solr, the user gets a 500 internal error. As a developer I can see that what happens is an RSolr::Error::Http in CatalogController#index with the following line of code as the source of the problem:

res = blacklight_solr.send_and_receive(path, :params=>solr_params)

Is it possible to customize the error handling so that I can at least display an indicative error message to the user instead of the unhelpful 500 internal error?

هل كانت مفيدة؟

المحلول

Open file lib\blacklight\catalog.rb. The function rsolr_request_error(exception) is responsible to handle Solr errors. The exception parameter is an RSolr::RequestError and it represents the error from Solr. In order to handle the error by displaying the message from Solr just add the following inside the else:

error_status = eval(exception.response[:body])['error']
if !error_status.nil? and !error_status['msg'].nil?
    flash_notice = error_status['msg']
else
    flash_notice = I18n.t('blacklight.search.errors.request_error')
end

If you wish to display a different message then assign a different message to flash_notice. If you wish to handle the error differently then this is where to do so.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top