Carlos Brando

Nome do Jogo

Edge Rails: Simplificando o uso de partials

A cada nova versão do Rails o método render tem se tornado mais esperto, e no Rails 2.3 isto não será diferente.

Até hoje se nenhuma opção fosse informada ao método ele usaria a opção :file como padrão. Isto mudou já que agora a opção padrão, para quando nenhuma outra for informada, será renderizar uma partial. Além disso, por convenção, o último parâmetro informado ao método sempre será o hash de variáveis locais (local_assigns).

Isto muda um pouco a forma de usar partials. Vejamos alguns exemplos comparando a sintaxe antiga com a nova sintaxe. Primeiro um exemplo simples:

# Antes
render :partial => "account"

# Rails 2.3 em diante
render "account"

Agora um exemplo informando uma variável local:

# Antes
render :partial => "account", :locals => { :account => @buyer }

# Rails 2.3 em diante
render "account", :account => @buyer

No exemplo abaixo a variável @account é uma instancia da classe Account, desta forma o Rails usa o RecordIdentifier para fazer a mágica:

# Antes
render :partial => "accounts/account", :locals => { :account => @account }

# Rails 2.3 em diante
render(@account)

Um último exemplo, onde a variável @posts é um array com instâncias da classe Post. Mais mágica:

# Antes
render :partial => "posts/post", :collection => @posts

# Rails 2.3 em diante
render(@posts)

Caso você esteja migrando seu projeto para o Rails 2.3, tome o cuidado de verificar se não está usando o método render com a opção padrão em algum lugar do seu projeto. Se estiver, será necessário alterar para especificar a opção :file, assim:

render :file => 'greeting'

Como você pode ver, tivemos uma boa diminuição na quantidade de código necessário ao usar partials.


Todos os exemplos dados aqui funcionarão somente no Ruby on Rails 2.3/3.0 ou superior. Você pode encontrar mais detalhes sobre esta e outras novidades acompanhando a série Edge Rails.

Comments