0Pricing
Ruby Academy · บทเรียน

มุมมองและการเรนเดอร์

ส่งคืนการตอบกลับ

มุมมองและการเรนเดอร์ เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

มุมมองคืออะไร

มุมมอง คือแม่แบบที่สร้างการตอบสนองซึ่งส่งไปยังไคลเอนต์ โดยปกติจะเป็น HTML มุมมองจะเปลี่ยนข้อมูลที่ตัวควบคุมเตรียมไว้ให้เป็นหน้าเว็บ

  • มุมมองอยู่ใน app/views
  • มุมมองจะจัดกลุ่มตามตัวควบคุม เช่น app/views/articles
  • ชื่อแม่แบบเริ่มต้นจะตรงกับชื่อแอ็กชัน

การแสดงผลตามแบบแผน

โดยค่าเริ่มต้น แอ็กชันจะแสดงผลแม่แบบที่มีชื่อเดียวกับแอ็กชันนั้น แอ็กชัน index ของ ArticlesController จะแสดงผล app/views/articles/index.html.erb โดยไม่ต้องเรียกใช้ render อย่างชัดเจน

def index
  @articles = Article.all
  # automatically renders articles/index.html.erb
end

แม่แบบ ERB

ภาษาแม่แบบเริ่มต้นคือ ERB (Embedded Ruby) ซึ่งผสม HTML เข้ากับรูบี:

  • <%= ... %> ใช้แสดงค่า
  • <% ... %> ใช้เรียกใช้โค้ดโดยไม่แสดงผล
<h1>Articles</h1>
<% @articles.each do |article| %>
  <p><%= article.title %></p>
<% end %>

เค้าโครง

เค้าโครง ครอบมุมมองทุกมุมมองด้วยมาร์กอัปที่ใช้ร่วมกัน เช่น ส่วนหัว การนำทาง และส่วนท้าย โดยค่าเริ่มต้น app/views/layouts/application.html.erb จะมี <%= yield %> ซึ่งเป็นตำแหน่งที่แทรกมุมมองของแอ็กชัน

<!-- application.html.erb -->
<html>
  <body>
    <%= yield %>
  </body>
</html>

ส่วนย่อย

ส่วนย่อย คือส่วนของแม่แบบที่นำกลับมาใช้ซ้ำได้ โดยชื่อไฟล์จะขึ้นต้นด้วยขีดล่าง ให้แสดงผลด้วย render เพื่อหลีกเลี่ยงการทำมาร์กอัปซ้ำ

<!-- _article.html.erb -->
<p><%= article.title %></p>

<!-- in index.html.erb -->
<%= render "article", article: @article %>

การแสดงผลชุดข้อมูล

การส่งชุดข้อมูลให้ render จะแสดงผลส่วนย่อยหนึ่งครั้งต่อหนึ่งรายการ ซึ่งเป็นทางลัดตามแบบแผนที่นิยมใช้ Rails จะอนุมานชื่อส่วนย่อยจากโมเดล

<%= render @articles %>

<!-- renders _article.html.erb for each article -->

ตัวช่วยของมุมมอง

Rails มีตัวช่วยที่สร้าง HTML อย่างปลอดภัย ได้แก่ link_to สำหรับลิงก์ form_with สำหรับแบบฟอร์ม และ image_tag สำหรับรูปภาพ ตัวช่วยเหล่านี้ทำให้แม่แบบสะอาดและมีรูปแบบสอดคล้องกัน

<%= link_to "View", article_path(@article) %>
<%= image_tag "logo.png" %>

การตอบสนองด้วยรูปแบบอื่น

ตัวควบคุมสามารถส่งคืนสิ่งอื่นนอกเหนือจาก HTML ได้ render json: จะส่ง JSON สำหรับเอพีไอ ส่วน respond_to จะให้บริการรูปแบบต่าง ๆ ตามที่ไคลเอนต์ร้องขอ

def show
  @article = Article.find(params[:id])
  render json: @article
end

บล็อกการตอบสนองหลายรูปแบบ

ใช้ respond_to เพื่อจัดการหลายรูปแบบภายในแอ็กชันเดียวกัน แอ็กชันเดียวกันสามารถส่งคืน HTML ให้เบราว์เซอร์ และส่งคืน JSON ให้ไคลเอนต์เอพีไอได้

def show
  @article = Article.find(params[:id])
  respond_to do |format|
    format.html
    format.json { render json: @article }
  end
end

รหัสสถานะ

กำหนดสถานะ HTTP ของการตอบสนองด้วย status: ใช้ :ok (200), :created (201) หลังจากสร้างสำเร็จ และ :unprocessable_entity (422) เมื่อการตรวจสอบไม่ผ่าน เพื่อให้ไคลเอนต์ตอบสนองได้อย่างถูกต้อง

render :new, status: :unprocessable_entity
render json: @article, status: :created

การหลีกอักขระและความปลอดภัย

ERB จะหลีกอักขระ HTML ในเอาต์พุตของ <%= %> โดยอัตโนมัติ ซึ่งช่วยป้องกันการแทรกสคริปต์ข้ามไซต์จากข้อมูลผู้ใช้ ควรทำเครื่องหมายเนื้อหาว่าปลอดภัยด้วย raw หรือ html_safe เฉพาะเมื่อคุณเชื่อถือเนื้อหานั้นอย่างสมบูรณ์เท่านั้น การใช้สิ่งเหล่านี้อย่างไม่เหมาะสมจะเปิดช่องโหว่ XSS ขึ้นมาอีกครั้ง

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับมุมมองและการแสดงผล

สรุป: มุมมองและการแสดงผล

คุณได้เรียนรู้การส่งคืนการตอบสนอง:

  • แอ็กชันจะแสดงผลมุมมอง ERB ที่ตรงกันตามแบบแผน
  • เค้าโครงครอบมุมมอง ส่วนย่อยช่วยนำส่วนต่าง ๆ กลับมาใช้ซ้ำ
  • ตัวช่วยอย่าง link_to และ form_with ใช้สร้าง HTML
  • render json: และ respond_to ใช้ให้บริการเอพีไอ และควรกำหนดรหัสสถานะให้เหมาะสม
  • ERB จะหลีกอักขระในเอาต์พุตเพื่อป้องกัน XSS

เท่านี้ก็จบหลักสูตรตัวควบคุมและการกำหนดเส้นทางแล้ว

คำถามที่พบบ่อย

บทเรียน “มุมมองและการเรนเดอร์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “มุมมองและการเรนเดอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “มุมมองและการเรนเดอร์”

ส่งคืนการตอบกลับ คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “มุมมองและการเรนเดอร์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม

ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เส้นทางและทรัพยากร
  2. ตัวควบคุมและการดำเนินการ
  3. พารามิเตอร์แบบเข้มงวด
  4. มุมมองและการเรนเดอร์
← กลับไปที่ Ruby Academy