处理来自Blacklight的Solr错误消息

时间:2013-08-27 14:26:27

标签: ruby-on-rails ruby solr blacklight

每当Solr因某种原因未能执行查询时,它都会返回错误消息和错误代码。我想在Blacklight中处理这些错误。现在,当从Solr收到错误时,用户会收到500内部错误。作为开发人员,我可以看到发生的是RSolr::Error::Http in CatalogController#index,其中以下代码行作为问题的根源:

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

是否可以自定义错误处理,以便至少可以向用户显示指示性错误消息,而不是无用的500内部错误?

1 个答案:

答案 0 :(得分:1)

打开文件lib\blacklight\catalog.rb。函数rsolr_request_error(exception)负责处理Solr错误。 exception参数是RSolr::RequestError,它表示Solr的错误。为了通过显示来自Solr的消息来处理错误,只需在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

如果您希望显示不同的消息,请为flash_notice分配不同的消息。如果您希望以不同方式处理错误,那么就可以这样做了。