2013-08-27 45 views
1

只要Solr由於某種原因未能執行查詢就會返回錯誤消息和錯誤代碼。我想在Blacklight中處理這樣的錯誤。現在,當從Solr收到錯誤時,用戶會收到500內部錯誤。作爲一個開發者,我可以看到發生的事情是一個RSolr::Error::Http in CatalogController#index與下面的代碼行作爲問題的根源:處理來自Blacklight的Solr錯誤消息

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

是否可以自定義錯誤處理,這樣我至少可以顯示一個指示錯誤消息給用戶而不是無用的500內部錯誤?

回答

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。如果你希望以不同的方式處理錯誤,那麼這是在哪裏做的。