0Pricing
Ruby Academy · Lekcja

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
end

Szablony 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
end

Bloki 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
end

Kody 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: :created

Escapowanie 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_to i form_with, tworzą kod HTML.
  • render json: i respond_to obsł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

  1. Trasy i zasoby
  2. Kontrolery i akcje
  3. Silne parametry
  4. Widoki i renderowanie
← Powrót do Ruby Academy