O que é um partial?
O mesmo card, renderizado repetidas vezes
A página de roadmap, app/views/catalog/courses/index.html.erb, renderiza o mesmo card para todo curso: imagem, título, barra de progresso e selo, mudando só os dados. Escrever essa marcação à mão por curso duplicaria mais de vinte linhas em todo lugar onde um curso aparece. Este projeto a escreve uma vez e a reaproveita:
<%= render partial: "course_card", collection: group.courses, as: :course,
cached: ->(course) { card_cache_key(course, @progress) },
locals: { lvl: lvl, level_name: level_name,
progress: @progress, lesson_counts: @lesson_counts } %>
Um partial é um arquivo de view feito para ser reusado
Essa linha renderiza app/views/catalog/courses/_course_card.html.erb, um template .html.erb como os dos dois últimos cursos, escrito uma vez e chamado onde a marcação se repete. Ela roda duas vezes no index.html.erb, uma para cursos com categoria e outra para os sem. Este projeto tem uns quarenta arquivos assim, do _navbar.html.erb e _footer.html.erb do layout ao _form_errors.html.erb, _course_card.html.erb, _sponsor_line.html.erb e uma dúzia de formulários de admin. Esse reaproveitamento é o motivo de o mecanismo existir.
Para onde este curso vai
- A aula 2 cobre a regra de nomenclatura com underscore que todo arquivo partial segue.
- A aula 3 cobre passar variáveis locais para dentro de um partial, como
course:elvl:acima. - A aula 4 lê três partials deste projeto.
- A aula 5 cobre renderizar um partial que mora numa pasta diferente.
- A aula 6 compara a forma abreviada de render com a explícita usada acima.
- A aula 7 junta tudo e nomeia o que vem a seguir.
Continue com a aula 2
A convenção de nomenclatura com underscore
Explica o underscore no nome do arquivo partial e como o Rails procura na pasta da view que chama.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.