Anexando imagens a um model no Ruby on Rails

Primeiro post sobre Ruby on Rails: tenho estudado bastante tanto o framework como a linguagem (Ruby), gostado bastante deles. A linguagem é totalmente orientada a objetos e com uma leitura muito simples, e o framework com seu conceito Convention over Configuration faz aumentar muito a produtuvidade.

Vamos lá, para um exemplo simples de como possibilitar que uma entidade da sua aplicação tenha uma imagem atrelada. Para isso, vamos usar a gem Paperclip (em https://github.com/thoughtbot/paperclip tem a documentação completa, inclusive como instalar).
O exemplo abaixo foi testado no Ubuntu 11.04, RoR 3.0.9 e Ruby 1.8.7

Criar a aplicação
rails new MinhaApp

Editar Gemfile
gem 'paperclip'
*Se necessário, rode bundle install

Como é para exemplificar, vamos usar scaffold para gerar uma entidade Image
rails generate scaffold Image name:string description:text

Gerar migration que adiciona em Image um file (obs: asset pode ter qualquer outro nome)
rails generate paperclip Image asset

Alterar model de Image (image.rm)
class Image < ActiveRecord::Base
  has_attached_file :asset,
                    :styles => { :medium => "400×400>",
                                 :thumb => "100×100>" }
end

Alterar o form de criação de uma Image, deixando o form com multipart
<%= form_for(@image, {:multipart => true}) do |f| %>

Inserir no form campo de imagem
<%= f.file_field :asset %>

Alterar o show.html.erb inserindo as tags que exibe a imagem e suas variações
<%= image_tag @image.asset.url %>
<%= image_tag @image.asset.url(:medium) %>
<%= image_tag @image.asset.url(:thumb) %>

Crie o banco e rode as migrations
rake db:create
rake db:migrate

Pronto, só subir a aplicação Rails
rails server

E acessar http://localhost:3000

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *