Rails Girl – Rails for Newbies

Ruby on Rails for Newbies

Partials, reutilização de código no Rails agosto 5, 2008

Filed under: Ruby on Rails — amandavarella @ 8:10 pm
Tags: ,

Partials são pedaços de página que podem ser reutilizados pra evitar replicação de código. Pra quem vem do mundo Java, as Partials fazem algo semelhante ao Tiles, vc vai juntando os “pedaços” conforme a sua necessidade. Então vai um simples, mas muito útil exemplo de Partials em Rails.

Vou utilizar o exemplo que eu tenho aqui, onde eu fiz o scaffold* para o modelo “reading”.
Na view index.html.erb foi gerado o seguinte trecho de código:

 
#index.html.erb

<% for reading in @readings %>
<tr>
<td><%=h reading.url %></td>
<td><%=h reading.text %></td>
<td><%=h reading.page %></td>
<td><%=h reading.time %></td>
<td><%= link_to ‘Show’, reading %></td>
<td><%= link_to ‘Edit’, edit_reading_path(reading) %></td>
<td><%= link_to ‘Destroy’, reading, :confirm => ‘Are you sure?’, :method => :delete %></td>
</tr>
<% end %>

Eu gostaria de reutilizar o trecho que está exibindo cada “reading”, então, eu vou retirar e colocar este trecho de código em uma Partial, assim eu posso chamá-la em qualquer outro lugar da minha aplicação, onde eu queira exibir as informações da mesma maneira.

Uma partial é um arquivo que começa com um “_”, underscore, underline…. então vou criar um arquivo _reading.html.erb (dentro da pasta de views de readings), e vou pegar todo o código que estava dentro do meu for. Este será o conteúdo da partial:
#_reading.html.erb

<tr>
<td><%=h reading.url %></td>
<td><%=h reading.text %></td>
<td><%=h reading.page %></td>
<td><%=h reading.time %></td>
<td><%= link_to ‘Show’, reading %></td>
<td><%= link_to ‘Edit’, edit_reading_path(reading) %></td>
<td><%= link_to ‘Destroy’, reading, :confirm => ‘Are you sure?’, :method => :delete %></td>
</tr>

E finalmente vou alterar o meu index.html.erb, substituindo:

#index.html.erb



<tr>
<td><%=h reading.url %></td>
<td><%=h reading.text %></td>
<td><%=h reading.page %></td>
<td><%=h reading.time %></td>
<td><%= link_to ‘Show’, reading %></td>
<td><%= link_to ‘Edit’, edit_reading_path(reading) %></td>
<td><%= link_to ‘Destroy’, reading, :confirm => ‘Are you sure?’, :method => :delete %></td>
</tr>

Por uma única linha:

#index.html.erb

<%= render :partial => 'reading', :collection => @readings%>

A partial receberá a collection “readings” como parâmetro.

Simples, bonito, e limpo!

Newbies Corner:
Scaffold é uma operação do Rails onde vc passa um nome de modelo e os campos, e ele gera uma aplicação CRUD (Create, Retrieve, Update e Delete) completa.
Ex: o comando “script/generate scaffold person name:string tel:number” vai gerar um cadastro completo de pessoas com nome e telefone, permitindo listar, excluir e alterar cada registro.

 

Heroku! julho 10, 2008

Filed under: Heroku,Ruby on Rails — amandavarella @ 1:22 am

Esse site é muito legal. O nome dele é Heroku, é uma ferramenta para construção de aplicações on-line em rails, vc pode importar um projeto rails existente, ou criar um do zero. Dá pra fazer tudo que se faz no rails do nosso console, é impressionante! Ele tem suporte a várias outras características legais, como compartilhamento. Penei um pouquinho pra conseguir fazer o import de um projeto meu (ele só aceita arquivo no formato .tar.gz), tentei com vários compactadores, e por fim, o PeaZip compactou em um formato que o Heroku aceitou. Uma outra coisa é que o Heroku só aceita aplicações em rails 2.0.2 ( não sei se aceita 2.1), e a minha aplicação velhinha, em 1.2.3 não rodou muito bem não, mas consegui ver os recursos disponíveis. O legal eh que para cada aplicação sua ele cria um link http://aplicacao.heroku.com, ou seja, da pra fazer aplicações e imediatamente deixá-las disponíveis na web. Quando eu tiver migrado para o rails mais recente, com certeza vou brincar muito com o Heroku. Aí vai a carinha dele:
Tela do Heroku

 

Tropeçando nos trilhos do rails julho 6, 2008

Filed under: Ruby on Rails — amandavarella @ 1:19 am
Tags:

Comecei meu aprendizado com o ruby on-line (tryruby).Sem me aprofundar muito no Ruby, fui direto pro Rails, pra ver como a coisa funcionava de verdade! Comecei bem, com o livro “Desenvolvimento rápido para a web com Ruby on Rails – Executando”.
Fui bem até o meio do capitulo 3, e daí pra frente a coisa começou a desandar.
O fim do capítulo 3 fala sobre listas e árvores. Quando informei o comportamento de lista na classe que eu estava usando:

class Slide "slideshow_id"
	belongs_to :photo
end

Com a linha “acts_as_list”, a coisa começou a desandar. A classe não funcionava de jeito nenhum, os métodos da lista não funcionavam. Se eu retirasse o “acts_as_list” voltava a funcionar. Dei uma “googlada” até que achem alguém falando que tinha que instalar o plugin do acts_as_list, pois bem, no prompt executei:

ruby script/plugin install acts_as_list

E as coisas começaram a funcionar. Continuando o tutorial, fui fazer os exemplos de árvore (acts_as_tree) e o que aconteceu? O mesmo problema, só que dessa vez era fácil, seguindo o raciocínio, só podia ser…

ruby script/plugin install acts_as_tree

E era mesmo, e minha árvore funcionou.
Terminado o capítulo 3, fui rumo ao capítulo 4, onde é mostrada a construção de uma aplicação CRUD com apenas uma linha de código (fora o modelo de dados que já tínhamos feito nos capítulos anteriores). E a aplicação deveria ter saído assim:

class PhotosController < ApplicationController scaffold :photo end [/sourcecode] E adivinhem? Pau no método scaffold! Eu já estava achando tudo muito estranho, como o livro não diz que tem que instalar uma porção de coisas? Aí pesquisando, vi nos blogs, grupos, várias pessoas com os mesmos problemas, e a questão está na versão do Rails, que para o livro era a 1.2.6 e atualmente estamos na 2.1. Uma solução sugerida era eu ficar instalando tudo que fosse pedindo a medida que eu precisasse, mas por favor né? Eu estou aprendendo, e ainda ter que ficar brigando com biblioteca não é um bom começo! Confesso que já estava começando a achar esse tal de rails bem esquisito! Aí pesquisa daqui, pesquisa de lá, vi um link muito bom, das pessoas falando especificamente de seus problemas com o livro , falando pra desinstalar o 2.0 e instalar o 1.2.. ai fiz isso, li tb o artigo do Akita, que diz que o rails pode rodar com múltiplas versões inclusive , só que pra mim não funcionou. Ah sim, esqueci de dizer que estou usando o Instant Rails, e aparentemente ele foi o problema, não gostou muito de eu mudar a versão de rails nativa dele não… então resolvi chutar o balde, e instalei o Instant Rails 1.7, que utiliza o Rails 1.2.3 e recomeçar com tudo de acordo.
Bem, quando eu estava quase desistindo deste livro, aí li neste artigo do Akita o seguinte trecho “Ou seja, sim, compre os livros que existem atualmente. Não fique aguardando porque senão você estará perdendo tempo. Nenhum livro é suficiente para aprender tudo. Todos os livros são bons para que se tenha pelo menos o “grosso”, mas depois disso é sua responsabilidade de evoluir sozinho. Por exemplo, o livro do Obie vai ficar parte obsoleto em breve porque o Rails 2.1 está para sair e isso trará coisas que obviamente o livro dele não cobre. O novo do Dave Thomas provavelmente vai cobrir 2.1, mas até ele sair nós já estaremos vendo coisas novas da 2.2 ou mesmo 3.0!”
Então, sigo com o livro antiguinho mesmo! Back to rails 1.2.3!