Contacta (+34) 622 045 404

Estudio de desarrollo front-end, maquetación web, diseño y programación WordPress freelance.

Fundado por Alberto Fortes, diseñador y maquetador web HTML5 responsive design, front-end developer JavaScript y programador WordPress freelance a medida desde 2006.

Especializados en outsourcing con importantes clientes finales.

FileColumn, subir ficheros e imágenes con Ruby on Rails de la forma más sencilla.

18 Marzo, 2007

ruby on rails

FileColumn es un plugin que nos permite crear un uploader para nuestras aplicaciones en rails de la forma más sencilla, sin tener que instalar gemas ni necesidad de controlar nada de nada de sql ni de ruby, simplemente es mágia.

1. Nos bajamos el plugin. En línea de comandos, dentro del directorio raiz de nuestra aplicación, ponemos:

./script/plugin install http://opensvn.csie.org/rails_file_column/plugins/file_column/trunk

¡Ya lo tenemos!, en /vendor/plugins/trunk/lib está todo.

2. Declara en el modelo que columna de la base de datos va a ser un fichero. En este ejemplo, en el modelo Product, la columna image va ser una imagen (si te suena de algo, vamos a aplicar FileColumn a la columna image del modelo Product de la aplicación depot del Agile Web Development with Rails)

class Product < ActiveRecord::Base #... file_column :image end

Con esto ya le hemos dicho al modelo que la columna image va a ser un fichero y a partir de ahí el plugin FileColumn hará el resto.

3. Vamos a la vista. Le decimos al form que debe ser multipart, sin esto no funciona:
<% form_tag ({:action => 'create'}, :multipart=>true) do %>
Por cierto es muy importante los corchetes, sin meter a la acción (y controlador) en ellos y dejar fuera el html, esto no funciona.

Y en el input:
<%= file_column_field "product", "image" %>

4. Ahora en la vista donde deba aparecer la imagen:

Donde product será el nombre de nuestro modelo e 'image' el de nuestra columna.
Si hubiésemos subido otro tipo de fichero, ya ssabemos que la llamada es <%= url_for_file_column Modelo, 'columna' %>

¡Y listo!, ya funciona 😉