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.

About these ads

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

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

%d blogueiros gostam disto: