Rails ROO Gem Excel上传验证文件扩展名

时间:2018-12-17 06:14:07

标签: ruby-on-rails ruby spreadsheet roo

下面的代码检查并针对未知文件格式引发运行时错误。

def open_spreadsheet
    case File.extname(file.original_filename)
        when ".csv" then CSV.new(file.path)
        when ".xls" then Roo::Excel.new(file.path, nil, :ignore)
        when ".xlsx" then Roo::Excelx.new(file.path)
    else 
        raise "Unknown file type: #{file.original_filename}"
    end
end

我想显示错误消息而不是运行时错误。

attr_accessor :file

如果标准格式的标题有任何修改,如何验证上传的电子表格标题字段并显示错误消息?

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

def open_spreadsheet
    case File.extname self.file.original_filename
    when ".xls"
        Roo::Excel.new self.file.path
    when ".xlsx"
        Roo::Excelx.new self.file.path
    else
        self.errors[:file] << I18n.t("errors.messages.invalid_file_format", extension: File.extname(file.original_filename))
        return nil
    end
end

您可以在此处对消息进行硬编码,但很高兴将其包含在正确的I18n标签中