O que é uma controller action?
A outra metade de uma rota
Rotas Rails: fundamentos terminou com get "partners" => "public/pages#partners", as: :partners, citando um destino sem abri-lo. Aqui está esse destino neste projeto:
# app/controllers/public/pages_controller.rb, o arquivo real deste projeto (resumido)
module Public
class PagesController < ApplicationController
def partners
@tiers = ::Partners::Tiers.purchasable
@partners = ::Partners::ActivePartnersQuery.call.partners
@inquiry = ::Partners::Inquiry.new
end
end
end
Isso é uma action de controller: um método público comum, partners aqui, numa classe que herda de ApplicationController. A string "public/pages#partners" da rota, controller#action, aponta para ela.
Um detalhe passa fácil: o :: na frente de cada constante. A classe mora dentro de module Public, então um Partners::Tiers simples faz o Ruby procurar Public::Partners::Tiers antes de cair no nível de cima. O :: pula essa busca e começa do topo. Num controller com namespace, mantenha isso de propósito em vez de tirar.
A mesma forma de todo método de model já coberto
A sintaxe não difere do published? do Article em ActiveRecord: introdução ao model; os dois são métodos Ruby comuns. O papel é que muda. Visão geral do Rails MVC o nomeou: um Controller coordena. Aqui ele pede dados a Partners::Tiers e Partners::ActivePartnersQuery e não decide regra de negócio nenhuma.
Uma rota, uma action, chamada uma vez por requisição
Visitar /partners roda partners uma vez, do começo, a cada requisição, sem estado herdado. É a execução única que Servidor Rails e Puma descreveu pelo lado do servidor: uma thread, uma requisição, uma passada pelo método.
Pontos-chave
- Uma action de controller é um método público numa classe que herda de
ApplicationController, casada porcontroller#action. - O
Public::PagesController#partnersé para onde leva o último exemplo de Rotas Rails: fundamentos. - Uma action coordena, pedindo dados a outros objetos: o papel de Controller de Visão geral do Rails MVC.
- Cada requisição roda sua action uma vez, do começo, sem estado herdado.
Continue com a aula 2
index, show, new, create: quatro nomes convencionais
Os nomes index, show, new e create têm sentidos convencionais: listar, exibir, formulário em branco e salvar.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.