Soy muy nuevo en ruby on rails. Estoy atascado con un problema. Quiero hacer una funcionalidad de carga de archivos a través de la cual pueda cargar cualquier tipo de archivo (texto, imagen, etc.). Mi archivo de controlador es (upload_controller.rb):¿Cómo subir un archivo en ruby on rails?
class UploadController < ApplicationController
def index
render :file => 'app\views\upload\uploadfile.html.erb'
end
def uploadFile
post = DataFile.save(params[:upload])
render :text => "File has been uploaded successfully"
end
end
Mi archivo de modelo es (data_file.rb):
class DataFile < ActiveRecord::Base
attr_accessor :upload
def self.save(upload)
name = upload['datafile'].original_filename
directory = 'public/data'
# create the file path
path = File.join(directory,name)
# write the file
File.open(path, "wp") { |f| f.write(upload['datafile'].read)}
end
end
Mi archivo de Vista es (uploadfile.html.erb):
<h1>File Upload</h1>
<%= form_tag({:action => 'uploadFile'}, :multipart => true) do %>
<p><label for="upload_file">Select File</label>
<%= file_field 'upload', 'datafile' %></p>
<%= submit_tag "Upload" %>
<% end %>
Ahora, cuando intento cargar la imagen, aparece el error "modo de acceso no válido wp" en el archivo del modelo. Cuando cambio File.open (ruta, "wp") a File.open (ruta, "w") en el archivo de modelo, aparece el error "'\ x89' de ASCII-8BIT a UTF-8". Para el archivo .txt, funciona bien. Estoy usando ruby 1.9.3 y rieles 3.2.6
este hilo podría ser útil http://stackoverflow.com/questions/4988724/ruby-on-rails-upload-file-problem-odd-utf8-conversion-error –
posible duplicado de [Carga un archivo en Rails] (http://stackoverflow.com/questions/14174044/uploading-a-file-in-rails) – Nateowami
¿cómo se ve el archivo routes.db para esto? Lo estoy intentando por mí mismo. –