- assets: onde ficam os CSS, JavaScripts e Imagens da aplicação.
- models: onde ficam os objetos da aplicação, geralmente representam uma tabela do Banco de Dados ou um Relacionamento entre tabelas.
- O nome dos arquivos geralmente estão no padrão "<nome_da_tabela>.rb"
- controllers: onde ficam as classes de controle, que permitem que os objetos (model) acessem a camada de apresentação (view).
- O nome dos arquivos geralmente estão no padrão "<nome_da_tabela>s_controller.rb"
- Observe que o nome da tabela deve ser no plural.
- views: onde ficam as páginas html da aplicação.
- O nome dos arquivos geralmente estão no padrão "<metodo_do_controlador>".html.erb
Quando for necessário criar um método para substituir uma coluna da tabela do Banco de Dados, onde este método poderá ser utilizado por qualquer página da aplicação, deve-se criar um método na classe do "Model", por exemplo:
#----tarefa.rb
#Custo de cada tarefa
def custo(valor_hora)
return self.tempo_gasto * valor_hora
end
Quando for necessário criar uma variável pública para ser utilizada apenas em uma página específica, esta variável deve ser criada no método específico do controlador. Geralmente esta variável é o resultado de uma consulta em várias tabelas do banco de dados:
#----projetos_controller.rb
def show
#Tarefas do Projeto
@versao = @projeto.versoes.find_by(projeto_id: @projeto.id) if @projeto
@tarefas = @projeto.tarefas
@tarefas_da_versao = @tarefas.where(versao_id: @versao.id) if @tarefas and @versao
end
Como saber quando usar "find_by" ou "where" na consulta para uma nova variável?
- Quando o resultado da consulta retornar apenas 1 valor, então deve-se colocar "find_by";
- Quando o resultado da consulta retornar uma lista de objetos, então deve-se colocar "where";
Quando a variável retornar apenas 1 resultado, pode se usar a seguinte declaração:
#----view/projetos/show.html.erb
<%= @versao.nome %>
Quando retornar uma lista de objetos, será necessário fazer um declaração de loop:
#----view/projetos/show.html.erb
<% if @projeto %>
<% @tarefas_da_versao.each do |tarefa| %>
<li><%= tarefa.titulo %></li>
<% end %>
<% end %>
Quando o método for declarado no "Model", pode se usar a seguinte declaração:
#----view/projetos/show.html.erb
<% if @projeto %>
<% @tarefas_da_versao.each do |tarefa| %>
R$ <%= tarefa.custo(50) %>
<% end %>
<% end %>
0 Comentários