Rails ROO Gem Excel загрузить проверить расширение файла

Приведенный ниже код проверяет и вызывает ошибку времени выполнения для неизвестных форматов файлов.

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 ответ

Попробуйте что-то вроде этого:

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

Другие вопросы по тегам