Widoki i renderowanie
Zwracanie odpowiedzi
Widoki i renderowanie to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Czym jest widok?
Widok to szablon tworzący odpowiedź wysyłaną do klienta, zwykle w formacie HTML. Przekształca dane przygotowane przez kontroler w stronę.
- Widoki znajdują się w
app/views. - Są pogrupowane według kontrolera, na przykład w
app/views/articles. - Domyślna nazwa szablonu odpowiada nazwie akcji.
Renderowanie oparte na konwencji
Domyślnie akcja renderuje szablon o nazwie takiej samej jak akcja. Akcja index kontrolera ArticlesController renderuje app/views/articles/index.html.erb bez jawnego wywołania render.
def index
@articles = Article.all
# automatically renders articles/index.html.erb
endSzablony ERB
Domyślnym językiem szablonów jest ERB (Embedded Ruby). Łączy on kod HTML z kodem Ruby:
<%= ... %>wyświetla wartość.<% ... %>wykonuje kod bez wyświetlania wyniku.
<h1>Articles</h1>
<% @articles.each do |article| %>
<p><%= article.title %></p>
<% end %>Layouty
Layout otacza każdy widok wspólnym kodem HTML, takim jak nagłówek, nawigacja i stopka. Domyślny app/views/layouts/application.html.erb zawiera <%= yield %>, w miejscu którego wstawiany jest widok akcji.
<!-- application.html.erb -->
<html>
<body>
<%= yield %>
</body>
</html>Partiale
Partial to fragment szablonu wielokrotnego użytku, którego nazwa pliku zaczyna się od podkreślenia. Należy renderować go za pomocą render, aby uniknąć powielania kodu HTML.
<!-- _article.html.erb -->
<p><%= article.title %></p>
<!-- in index.html.erb -->
<%= render "article", article: @article %>Renderowanie kolekcji
Przekazanie kolekcji do render powoduje wyrenderowanie partiala raz dla każdego elementu — jest to idiomatyczny skrót. Rails wywnioskuje nazwę partiala na podstawie modelu.
<%= render @articles %>
<!-- renders _article.html.erb for each article -->Helpery widoków
Rails udostępnia helpery, które bezpiecznie generują kod HTML: link_to do tworzenia odnośników, form_with do formularzy i image_tag do obrazów. Dzięki nim szablony pozostają przejrzyste i spójne.
<%= link_to "View", article_path(@article) %>
<%= image_tag "logo.png" %>Odpowiadanie w innych formatach
Kontrolery mogą zwracać coś więcej niż HTML. render json: wysyła JSON na potrzeby API, a respond_to obsługuje różne formaty w zależności od żądania klienta.
def show
@article = Article.find(params[:id])
render json: @article
endBloki respond_to
Należy używać respond_to, aby obsłużyć wiele formatów w jednej akcji. Ta sama akcja może zwracać HTML do przeglądarki i JSON do klienta API.
def show
@article = Article.find(params[:id])
respond_to do |format|
format.html
format.json { render json: @article }
end
endKody statusu
Status HTTP odpowiedzi można ustawić za pomocą status:. Należy używać :ok (200), :created (201) po pomyślnym utworzeniu zasobu oraz :unprocessable_entity (422), gdy walidacja się nie powiedzie, aby klienci mogli prawidłowo zareagować.
render :new, status: :unprocessable_entity
render json: @article, status: :createdEscapowanie i bezpieczeństwo
ERB automatycznie wykonuje escapowanie HTML wyniku <%= %>, co zapobiega atakom XSS wykorzystującym dane użytkownika. Treść należy oznaczać jako bezpieczną za pomocą raw lub html_safe tylko wtedy, gdy ma się do niej pełne zaufanie; niewłaściwe użycie tych metod ponownie otwiera luki XSS.
Szybki test
Proszę sprawdzić swoją znajomość widoków i renderowania.
Podsumowanie: widoki i renderowanie
Nauczył się Pan/Pani zwracać odpowiedzi:
- Akcje zgodnie z konwencją renderują pasujący widok ERB.
- Layouty otaczają widoki, a partiale umożliwiają ponowne wykorzystanie fragmentów.
- Helpery, takie jak
link_toiform_with, tworzą kod HTML. render json:irespond_toobsługują API; należy ustawiać prawidłowe kody statusu.- ERB wykonuje escapowanie wyniku, aby zapobiegać atakom XSS.
To kończy kurs dotyczący kontrolerów i routingu.
Często zadawane pytania
Czy lekcja „Widoki i renderowanie” jest bezpłatna?
Tak — pełny tekst „Widoki i renderowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Widoki i renderowanie”?
Zwracanie odpowiedzi Ćwiczysz Ruby Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Ruby Academy?
Nie wymagamy żadnego doświadczenia. Ruby Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Widoki i renderowanie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Ruby Academy?
Tak. Każda lekcja Ruby Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Trasy i zasoby
- Kontrolery i akcje
- Silne parametry
- Widoki i renderowanie