2017-07-30 105 views
0

我目前擁有導入文件的文件導入功能,並記錄了所有錯誤。顯示錯誤消息的導軌

我在控制器中的錯誤解決方案看起來像這樣。 (有更多的定製邏輯,以檢查是否存在錯誤..但對於忽略這個問題)

error_report = Item.item_import(params[:file]) 
redirect_to vendor_path, alert: error_report 

我得到一個問題,當error_report比允許的4KB更大。什麼是顯示錯誤和重定向用戶的正確方法?也許將錯誤綁定到對象並在html中呈現?

回答

0

您有幾種選擇:

  1. 附上錯誤相關的持久化的對象。在後續頁面加載時從持久存儲中提取錯誤。

  2. 使用鍵值存儲(例如Redis)來保存Flash消息而不是cookie(這是4kb限制的起點)。

  3. 在重定向之前預渲染帶有錯誤消息的HTML部分並將其緩存在緩存存儲中(類似於Memcache),然後在下一頁的頁面上呈現緩存的部分。您可以爲部分名稱生成唯一的密鑰,然後將其設置爲單獨的閃存密鑰。

  4. 可能不是您的特定情況下的選項,但對於其他情況,您可以簡單地截斷錯誤消息以適應範圍。

+0

#1似乎是一個不錯的選擇。但是,我將如何將錯誤附加到重定向上的對象? (重定向轉到控制器中的另一個方法) – HoosierCoder

+0

@HoosierCoder'Item.logs.create(status :: fail,error:error_report); redirect_to item_path(@item,status:「fail」)'。然後在'show'動作:'@error = @ item.logs.last.error if params [:status] ==「fail」'。 – coreyward

+0

因此,在您的方法中,您只需設置一個單獨的「日誌」數據庫表。然後記錄錯誤? – HoosierCoder