มุมมองและการเรนเดอร์
ส่งคืนการตอบกลับ
มุมมองและการเรนเดอร์ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เส้นทางและทรัพยากร
- ตัวควบคุมและการดำเนินการ
- พารามิเตอร์แบบเข้มงวด
- มุมมองและการเรนเดอร์