2017-07-30 52 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