Anúncios
  • Categorias

  • fevereiro 2012
    S T Q Q S S D
    « dez   mar »
     12345
    6789101112
    13141516171819
    20212223242526
    272829  

Como customizar (editar) as views geradas pelo scaffold no Rails

Durante um bom tempo quis saber como customizar os arquivos gerados pelo scaffold, na verdade isso é mais simple do que parece. Quando o este comando é executado o Rails verifica se há algum modelo definido pelo usuário, caso não encontre o Rails utiliza o modelo padrão consta nas libs da própria framework.
Então o que temos que fazer é definir estes modelos customizados e colocá-los no local correto.

Então vamos começar acessando o repossitório do Rails no GitHub mais especificamente na pasta /railties/lib/rails/generators/erb/scaffold/templates acesse-a neste link:
https://github.com/rails/rails/tree/master/railties/lib/rails/generators/erb/scaffold/templates.

Neste diretório você encontrar o modelos utilizados para os arquivos:

_form.html.erb
edit.html.erb
index.html.erb
new.html.erb
show.html.erb

Copie os 5 arquivos para o diretório /libs/templates/erb/scaffold

Provavelmente você não vai encontrar esse diretório, então crie-o corforme o esquema acima.

Neste tutorial vamos editar o index.html.erb, mas você pode alterar qualquer um desses arquivos.

Abrindo o arquivo, vamos econtrar o seguinte conteudo.


<h1>Listing <%= plural_table_name %></h1>

<table>
 <tr>
 <% attributes.each do |attribute| -%>
 <th><%= attribute.human_name %></th>
 <% end -%>
 <th></th>
 <th></th>
 <th></th>
 </tr>

<%%= content_tag_for(:tr, @<%= plural_table_name %>) do |<%= singular_table_name %>| %>
 <% attributes.each do |attribute| -%>
 <td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
 <% end -%>
 <td><%%= link_to 'Show', <%= singular_table_name %> %></td>
 <td><%%= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %></td>
 <td><%%= link_to 'Destroy', <%= singular_table_name %>, <%= key_value :confirm, "'Are you sure?'" %>, <%= key_value :method, ":delete" %> %></td>
 <%% end %>
 </table>

<br />

<%%= link_to 'New <%= human_name %>', new_<%= singular_table_name %>_path %>

Vamos fazer uma alteração simples traduzindo o que as informações do index para o portugues:


<h1>Lista de <%= plural_table_name %></h1>

<table>
 <tr>
 <% attributes.each do |attribute| -%>
 <th><%= attribute.human_name %></th>
 <% end -%>
 <th></th>
 <th></th>
 <th></th>
 </tr>

<%%= content_tag_for(:tr, @<%= plural_table_name %>) do |<%= singular_table_name %>| %>
 <% attributes.each do |attribute| -%>
 <td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
 <% end -%>
 <td><%%= link_to 'Exibir', <%= singular_table_name %> %></td>
 <td><%%= link_to 'Editar', edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %></td>
 <td><%%= link_to 'Apagar', <%= singular_table_name %>, <%= key_value :confirm, "'Você está certo disso?'" %>, <%= key_value :method, ":delete" %> %></td>
 <%% end %>
 </table>

<br />

<%%= link_to 'Novo(a) <%= human_name %>', new_<%= singular_table_name %>_path %>

Salve e execute um scaffold como teste.

Você irá verificar que o index foi criado a partir do modelo que acabamos de definir. Portanto podemos alterar da maneira que quisermos esses arquivos para que eles fiquem mais adequados à nossa aplicação, isso com certeza vai aumentar a produtividade do nosso trabalho com o rails.

Anúncios

Uma resposta

  1. Otimo post, era o q estava procurando.

    Parabens

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: