Carga de archivos en Rails: los datos son un objeto, ¿cómo los devuelvo en mi vista?
-
05-07-2019 - |
Pregunta
Al realizar una carga en mi proyecto de Rails, la base de datos almacena
---! ruby ??/ object: File tipo_de_contenido: application / octet-stream original_path: my.numbers
¿cómo consigo que devuelva mis números en mi vista solamente?
Muchas gracias! Marco
ps. No quiero usar attachment_fu o cualquier otro complemento, preferiblemente.
Solución
El controlador recibe una carga de archivo como un objeto de archivo, no como datos, por lo que es su responsabilidad leerlo. Los archivos cargados normalmente se guardan en un directorio temporal y hay un identificador de archivo abierto en el params.
Podría hacer algo como lo siguiente para recuperar los datos:
def create
# Read in data from file into parameter before creating anything
if (params[:model] and params[:model][:file])
params[:model][:file] = params[:model][:file].read
end
@model = MyModel.create(params[:model])
end
Probablemente deba asegurarse de que la columna en la base de datos pueda almacenar datos binarios. En las migraciones de MySQL, este es el tipo de columna binaria.
Otros consejos
Puede acceder al nombre del archivo cargado con el ayudante original_filename. así params [: model] [: file] .original_filename