O que é uma controller action?

Prévia grátis 2 min de leitura

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 por controller#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.
Aula 1 de 7 · grátis

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.

Digite para buscar...