De que trata o artigo: Fechamos o minicurso aprendendo como utilizar as partials do Rails para minimizar o desenvolvimento e como enviar arquivos para o servidor usando o conhecido plug-in Paperclip.


Para que serve:
Com esse artigo conseguiremos aperfeiçoar a qualidade do nosso código e, além disso, aprenderemos a criar um sistema de uploads, útil em diversas situações.

Em que situação o tema útil: Em diversos serviços precisamos agilizar o desenvolvimento de partes redundantes de uma aplicação, e as partials são um importante recurso para ganho de produtividade. Já o upload de arquivos, na nossa aplicação, possibilita ao usuário customizar seu espaço no blog, mas este mecanismo também pode ser utilizado para outras diversas funcionalidades.

Esse é o último artigo da série Minicurso de Ruby on Rails. Durante a série, conhecemos as principais funcionalidades desse framework que ganha espaço no mercado graças a sua agilidade e minimalismo.

Vimos nas últimas edições da WebMobile como implementar cada funcionalidade de um aplicativo de blog: categorias, tags e usuários. Neste último artigo veremos como usar as partials para refatorar o código, como trabalhar com o upload de arquivos, através do plug-in Paperclip, e como modificar as urls dos posts para a otimização dos serviços de busca.

Partials

Nas edições anteriores, vimos que partials são um recurso usado pelo Ruby on Rails para diminuir os códigos repetidos de um aplicativo e assim agilizar a manutenção do projeto. No nosso blog, temos duas views da entidade Post muito semelhantes: a que lista todos os posts (index.html.erb) e a que mostra o post e seus comentários (show.html.erb).

Para evitarmos a redundância em nosso código, crie dentro da pasta app/views/posts o arquivo _post.html.erb. Todo arquivo cujo nome começa com underscore (_) é entendido como uma partial no Rails. O conteúdo da partial _post.html.erb é apresentado na Listagem 1.

Listagem 1. Partial _post.html.erb


   1  <h2><%= link_to post.title, post %></h2> 
   2  
   3  <h3><%= post.created_at.to_s(:short) %> - <%= time_ago_in_words(post.created_at) %> - <%= link_to post.user.login, :controller => 'posts', :user => post.user.login if post.user_id %> - <%= link_to post.category.name, :controller => 'posts', :category => post.category.name if post.category_id %></h3>
   4  <p> 
   5    <%=h post.body %> 
   6    <br/>
   7    <small> 
   8        <%= link_to t(:edit), edit_post_path(post) if is_author?(post.user_id) %> 
   9       <%= link_to t(:destroy), post, :confirm => t(:are_you_sure), :method => :delete if is_author?(post.user_id) %> 
  10       Tags: <% for tag in post.tag_list.sort! %>
  11            <%= link_to tag, posts_path(:tag => tag) %>
  12       <% end %>
  13    </small> 
  14  </p> ... 

Quer ler esse conteúdo completo? Tenha acesso completo