Posted on 10-10-2008
Filed Under (português, ruby on rails) by ontonho

Existem muitos plugins ótimos para fazer upload de arquivos em Rails, entretanto, é possível fazer isso de uma forma bastante simples, passo a passo.

1- Criar um projeto Rails

>> rails photos
>> cd photos

2- Criar uma pasta dentro de Public (ou qualquer outro lugar) onde ficará armazenada a foto

>> mkdir public/photos

3- Gerar o modelo Photo

>> script/generate model photo

4- Editar o modelo (photo.rb) com o conteudo abaixo:

É necessário que a pasta “public/photos” exista.

  def self.save(upload)
    name =  upload['datafile'].original_filename
    directory = "public/photos"
    # create the file path
    path = File.join(directory, name)
    # write the file
    File.open(path, "wb") { |f| f.write(upload['datafile'].read) }
  end

5- Gerar o controller de photos

>> script/generate controller Photo

6- Editar o controller (photos_controller.rb) com o conteudo abaixo

def index
     render :file => 'app\views\upload\uploadfile.rhtml'
  end
  def create
    post = Photo.save(params[:upload])
    render :text => "Arquivo enviado com sucesso"
  end

7- Criar a view (uploadfile.rhtml)

<h1>File Upload</h1>
<% form_for(:html => { :multipart => true }, :action => :create) do |f| %>
<p><%= file_field 'upload', 'datafile' %></p>
  <p><%= f.submit "Create" %></p>
<% end %>

8- Abrir o navegador, fazer o upload e verificar a pasta public/photos

    Read More   

Comments

Pedro Guimarães on 18 August, 2009 at 6:55 pm #

Cara, tem algumas linhas erradas aí no código, como por exemplo:

“>> script/generate model music”

Quando na verdade deveria ser photo no lugar de music, não?

Entre outros detalhes pequenos de concordância de sintaxe da linguagem.

Quando você diz “editar o controller” você quer dizer o application_controller.rb ou o photos_controller.rb

Para quem saca mais é fácil notar a confusão, mas para os mais leigos, com certeza o código não vai servir de ajuda.

Eu mesmo tô começando no ruby agora e acho que esse post parece muito útil, mas não está tão bem escrito e comentado como poderia!


anderson on 19 August, 2009 at 7:15 am #

Olá Pedro! Muito obrigado por seu feedback!
Vou atualizar o post o mais rápido possível para que fique mais explicativo


Post a Comment
Name:
Email:
Website:
Comments: