Controladores e ações
Lide com requisições.
Controladores e ações é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.
O que é um controlador?
Um controlador recebe uma solicitação do roteador, executa o trabalho necessário e decide o que devolver. Ele coordena os modelos e as visualizações.
- Os controladores ficam em
app/controllers. - Eles herdam de
ApplicationController. - Cada método público é uma ação.
Definindo um controlador
Um controlador é uma classe cujo nome termina em Controller. Por convenção, ArticlesController processa as rotas do recurso articles.
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
endAs ações correspondem às rotas
Cada uma das sete rotas REST chama uma ação correspondente. O roteador envia GET /articles para index, GET /articles/1 para show e assim por diante. Nomear as ações de acordo com a convenção mantém tudo conectado automaticamente.
O mapa params
Os dados da solicitação chegam em params, um objeto semelhante a um mapa que contém segmentos da rota, parâmetros de consulta e campos do formulário. Para /articles/5, params[:id] é "5".
def show
@article = Article.find(params[:id])
endVariáveis de instância nas visualizações
Os controladores passam dados às visualizações por meio de variáveis de instância (o prefixo @). Qualquer @variable definida na ação fica visível no modelo de visualização correspondente.
def index
@articles = Article.all
# @articles is available in index.html.erb
endImplementando index e show
As ações de leitura são simples: index carrega uma coleção, e show carrega um registro pelo identificador. Em seguida, elas renderizam seus modelos padrão.
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
endImplementando create
A ação create constrói um registro a partir dos dados enviados e o salva. Em caso de sucesso, redireciona; em caso de falha, renderiza novamente o formulário para que o usuário possa corrigir os erros.
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render :new, status: :unprocessable_entity
end
endRedirecionar versus renderizar
São duas respostas muito diferentes:
redirect_toinforma ao navegador que ele deve fazer uma nova solicitação para outra URL.renderretorna uma visualização diretamente para a solicitação atual.
Redirecione depois de uma gravação bem-sucedida; renderize para exibir novamente um formulário com erros.
Ações anteriores
Uma before_action executa uma configuração compartilhada antes das ações escolhidas, reduzindo a duplicação. Um uso comum é carregar o registro necessário para show, edit, update e destroy.
class ArticlesController < ApplicationController
before_action :set_article, only: [:show, :edit, :update, :destroy]
private
def set_article
@article = Article.find(params[:id])
end
endFiltros e autenticação
before_action também aplica regras. Uma proteção como before_action :require_login pode executar redirect_to login_path e interromper a ação se o usuário não estiver autenticado, protegendo controladores inteiros de uma só vez.
before_action :require_login
private
def require_login
redirect_to login_path unless current_user
endLidando com registros ausentes
Quando find não consegue localizar um registro, ele gera RecordNotFound, que o Rails transforma em um erro 404 em produção. Você pode personalizar esse comportamento com rescue_from para exibir uma página amigável.
rescue_from ActiveRecord::RecordNotFound do
redirect_to articles_path, alert: "Not found"
endVerificação rápida
Teste sua compreensão sobre controladores.
Recapitulação: controladores e ações
Você aprendeu como os controladores processam solicitações:
- As ações correspondem às rotas por convenção.
paramstransporta os dados da solicitação;@variableschegam à visualização.createsalva e depois redireciona ou renderiza novamente.redirect_toerendertêm finalidades diferentes.before_actioncompartilha a configuração e aplica a autenticação.
Agora manteremos a atribuição em massa segura com parâmetros fortes.
Perguntas Frequentes
A aula “Controladores e ações” é grátis?
Sim — o texto completo de “Controladores e ações” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.
O que vou aprender em “Controladores e ações”?
Lide com requisições. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ruby Academy?
Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Controladores e ações”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ruby Academy?
Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Rotas e recursos
- Controladores e ações
- Parâmetros fortes
- Visões e renderização