aplicação. Para gerar um controller, usamos o comando abaixo:
script/generate controller eventos
exists app/controllers/
exists app/helpers/
create app/views/eventos
exists test/functional/
create app/controllers/eventos_controller.rb
create test/functional/eventos_controller_test.rb
create app/helpers/eventos_helper.rb
Utilizaremos muito o comando generate, que gera documentos automaticamente.
O nome passado para o comando é eventos, que será usado para compor todos os
arquivos gerados pelo mesmo.
Se você acessar a URL desse controller agora, você vai receber a seguinte tela:

Repare que, nesse caso, eu informei somente /controller/ como a URL, sem passar
nem a parte correspondente a uma ação ou a um id. Nesse caso, o Rails assume que
estamos invocando a ação index sem id. Esse é um mais exemplo de convenção ao
invés de configuração. Ao invés de ter sempre que especificar uma ação padrão em
algum lugar, o Rails convenciona que a ação padrão é index, poupando o
desenvolvedor sem afetar a aplicação.
Vamos olhar o arquivo app/controllers/eventos_controller.rb gerado por nosso
comando. Como já mencionamos, o Rails segue uma estrutura fixa de diretórios,
poupando mais uma vez o desenvolvedor. Arquivos relacionados ao banco vão em
no diretório db, arquivos de configuração em config e tudo relacionado a MVC vai
em app. Dentro de app temos vários outros diretórios que contém mais partes
específicas da aplicação. Em alguns casos, o Rails também adiciona um sufixo ao
arquivo, evitando colisões de nomes e problemas estranhos na aplicação, como é o
caso aqui. O arquivo do controller criado contém o seguinte:
class EventosController < ApplicationController
end
A classe EventosController define quem que irá responder a requisições padrão
em /home. Ela herda da classe ApplicationController, que está definida no arquivo
application.rb, no mesmo diretório. Sendo assim, qualquer método criado na classe
ApplicationController estará automaticamente disponível nos controllers gerados
para a aplicação.
Para criarmos a ação index, basta adicionarmos um método à classe:
class EventosController < ApplicationController
def index
end
end
O princípio que usamos acima é comum a tudo em Rails. Basicamente tudo o que
fazemos em uma aplicação usando o mesmo consiste em extender alguma classe
por meio da adição de métodos customizados.
Recarregando a página no navegador, ficamos com o seguinte:

Vamos que, dessa vez, o Rails identificou a ação a ser executada, mas, como a
aplicação não especificou nenhum retorno, houve um erro. Isso aconteceu porque o
Rails tentou aplicar automaticamente uma view para aquela ação do controller. Como
a view ainda não existe, temos o erro.
Nenhum comentário:
Postar um comentário