ตัวควบคุมและการดำเนินการ
จัดการคำขอ
ตัวควบคุมและการดำเนินการ เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตัวควบคุมคืออะไร
ตัวควบคุมรับคำขอจากตัวกำหนดเส้นทาง ดำเนินการที่จำเป็น และตัดสินใจว่าจะส่งอะไรกลับไป ตัวควบคุมเป็นผู้ประสานงานระหว่างโมเดลและมุมมอง
- ตัวควบคุมอยู่ใน
app/controllers - ตัวควบคุมสืบทอดมาจาก
ApplicationController - เมธอดสาธารณะแต่ละรายการคือการทำงานหนึ่งรายการ
การกำหนดตัวควบคุม
ตัวควบคุมคือคลาสที่ลงท้ายด้วย Controller ตามแบบแผน ArticlesController จะจัดการเส้นทางสำหรับทรัพยากร articles
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
endการทำงานเชื่อมโยงกับเส้นทาง
เส้นทาง REST ทั้งเจ็ดรายการจะเรียกการทำงานที่ตรงกัน ตัวกำหนดเส้นทางจะส่ง GET /articles ไปยัง index ส่ง GET /articles/1 ไปยัง show และทำเช่นเดียวกันต่อไป การตั้งชื่อการทำงานให้ตรงตามแบบแผนช่วยให้ทุกอย่างเชื่อมต่อกันโดยอัตโนมัติ
แฮช params
ข้อมูลคำขอจะมาถึงใน params ซึ่งเป็นออบเจ็กต์คล้ายแฮชที่เก็บส่วนของเส้นทาง สตริงคำค้นหา และช่องข้อมูลในแบบฟอร์ม สำหรับ /articles/5 ค่า params[:id] คือ "5"
def show
@article = Article.find(params[:id])
endส่งตัวแปรอินสแตนซ์ไปยังมุมมอง
ตัวควบคุมส่งข้อมูลไปยังมุมมองผ่านตัวแปรอินสแตนซ์ ซึ่งมีคำนำหน้าเป็น @ ตัวแปร @variable ใด ๆ ที่กำหนดในเมธอดการทำงานจะมองเห็นได้ในแม่แบบมุมมองที่ตรงกัน
def index
@articles = Article.all
# @articles is available in index.html.erb
endการนำการแสดงรายการและการแสดงรายการเดียวไปใช้
การทำงานสำหรับอ่านข้อมูลนั้นเรียบง่าย: index โหลดชุดข้อมูล และ show โหลดระเบียนหนึ่งรายการตามรหัส จากนั้นทั้งสองจะแสดงแม่แบบเริ่มต้นของตน
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
endการนำการสร้างไปใช้
การทำงาน create จะสร้างระเบียนจากข้อมูลที่ส่งมาและบันทึกข้อมูล เมื่อสำเร็จจะเปลี่ยนเส้นทาง แต่หากล้มเหลว จะแสดงแบบฟอร์มอีกครั้งเพื่อให้ผู้ใช้แก้ไขข้อผิดพลาด
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render :new, status: :unprocessable_entity
end
endเปลี่ยนเส้นทางไปยัง เทียบกับ แสดงผล
การตอบกลับสองแบบที่แตกต่างกันมาก:
redirect_toบอกเบราว์เซอร์ให้ส่งคำขอใหม่ไปยัง URL อื่นrenderส่งมุมมองกลับโดยตรงสำหรับคำขอปัจจุบัน
ให้เปลี่ยนเส้นทางหลังจากเขียนข้อมูลสำเร็จ และแสดงผลเพื่อแสดงแบบฟอร์มอีกครั้งพร้อมข้อผิดพลาด
ก่อนการทำงาน
before_action จะเรียกใช้การตั้งค่าร่วมก่อนการทำงานที่เลือก ช่วยลดการทำซ้ำ การใช้งานที่พบบ่อยคือโหลดระเบียนที่จำเป็นสำหรับ show, edit, update และ destroy
class ArticlesController < ApplicationController
before_action :set_article, only: [:show, :edit, :update, :destroy]
private
def set_article
@article = Article.find(params[:id])
end
endตัวกรองและการยืนยันตัวตน
before_action ยังใช้บังคับใช้กฎต่าง ๆ ได้ ตัวป้องกันอย่าง before_action :require_login สามารถใช้ redirect_to login_path และหยุดการทำงานได้หากผู้ใช้ยังไม่ได้ลงชื่อเข้าใช้ จึงช่วยปกป้องตัวควบคุมทั้งชุดได้ในครั้งเดียว
before_action :require_login
private
def require_login
redirect_to login_path unless current_user
endการจัดการระเบียนที่ไม่พบ
เมื่อ find ไม่พบระเบียน ระบบจะยก RecordNotFound ซึ่ง Rails จะแปลงเป็นการตอบกลับ 404 ในสภาพแวดล้อมใช้งานจริง คุณสามารถปรับแต่งได้ด้วย rescue_from เพื่อแสดงหน้าที่เข้าใจง่าย
rescue_from ActiveRecord::RecordNotFound do
redirect_to articles_path, alert: "Not found"
endตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับตัวควบคุม
สรุป: ตัวควบคุมและการทำงาน
คุณได้เรียนรู้วิธีที่ตัวควบคุมจัดการคำขอ:
- การทำงานจะเชื่อมโยงกับเส้นทางตามแบบแผน
paramsเก็บข้อมูลคำขอ ส่วน@variablesจะส่งข้อมูลไปยังมุมมองcreateจะบันทึกข้อมูล แล้วเปลี่ยนเส้นทางหรือแสดงผลอีกครั้งredirect_toและrenderมีจุดประสงค์แตกต่างกันbefore_actionใช้แบ่งปันการตั้งค่าและบังคับใช้การยืนยันตัวตน
ต่อไปเราจะทำให้การกำหนดค่าจำนวนมากปลอดภัยด้วยพารามิเตอร์แบบเข้มงวด
คำถามที่พบบ่อย
บทเรียน “ตัวควบคุมและการดำเนินการ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวควบคุมและการดำเนินการ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวควบคุมและการดำเนินการ”
จัดการคำขอ คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวควบคุมและการดำเนินการ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม
ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เส้นทางและทรัพยากร
- ตัวควบคุมและการดำเนินการ
- พารามิเตอร์แบบเข้มงวด
- มุมมองและการเรนเดอร์