O arquivo que envolve toda view
A metade que falta em toda página
O partners.html.erb, aberto no curso passado, nunca cita uma tag <html>, um <head>, uma navbar ou um rodapé. Visite /partners num navegador e está tudo lá, o mesmo cabeçalho e rodapé que toda outra página tem. Essa metade que falta mora num arquivo, app/views/layouts/application.html.erb, o invólucro dentro do qual toda view desta app renderiza.
Um wrapper, toda view
application.html.erb
+-----------------------------+
| <html><head>...</head> |
| <body> |
| <navbar> |
| +-----------------------+ |
| | partners.html.erb | |
| | (ou qualquer outra view) |
| +-----------------------+ |
| <footer> |
| </body></html> |
+-----------------------------+
Qualquer view que uma action renderize, partners.html.erb, o exemplo articles/show.html.erb ou outra, se encaixa no mesmo invólucro. Nenhuma view repete a tag <html>, os links de estilo ou a navbar; o layout os fornece uma vez para toda página.
A única peça ainda não explicada
A aula 6 do curso passado citou uma linha deste arquivo, <%= content_for(:title).presence || "Newbie on Rails" %>, sem explicar como o conteúdo de uma view vai parar dentro do invólucro. Esse é o assunto deste curso: yield, a palavra que insere uma view no layout.
Para onde este curso vai
- A aula 2 cobre o
yieldsimples, inserindo o conteúdo renderizado da view atual. - A aula 3 cobre
yield(:name)nomeado econtent_for(:name), espaços opcionais que uma view pode escolher preencher. - A aula 4 compara este
yieldcom o de Blocos Ruby (do..end). - A aula 5 lê o arquivo de layout deste projeto.
- A aula 6 observa uma view real preenchendo um desses espaços.
- A aula 7 junta tudo e nomeia o que vem a seguir.
Continue com a aula 2
yield simples: inserindo a view atual
Explica como o yield simples insere a view renderizada da action atual dentro do main, a cada requisição.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.