ตัวช่วยใน Rails คืออะไร
ผู้ช่วยคือวิธีการที่ (ส่วนใหญ่) ใช้ในมุมมอง Rails ของคุณเพื่อแชร์โค้ดที่ใช้ซ้ำได้ Rails มาพร้อมกับชุดวิธีการช่วยเหลือในตัว
หนึ่งในตัวช่วยในตัวเหล่านี้คือ time_ago_in_words
.
นี่คือตัวอย่าง :
time_ago_in_words(Time.now) # "less than a minute" time_ago_in_words(Time.now + 60) # "1 minute" time_ago_in_words(Time.now + 600) # "10 minutes"
วิธีนี้มีประโยชน์เมื่อใดก็ตามที่คุณต้องการแสดงเวลาในรูปแบบเฉพาะนี้
ตัวช่วยมุมมอง Rails อีกตัวหนึ่งคือ number_to_human
.
ตัวอย่าง :
number_to_human(10_000) # "10 Thousand"
วิธีนี้ดีมากเมื่อคุณต้องการจดตัวเลขแล้วพิมพ์ออกมาเหมือนที่คุณอ่าน ซึ่งทำให้รู้สึกเป็นมนุษย์มากขึ้น
คุณสามารถหาตัวช่วยเพิ่มเติมได้ในเอกสาร Ruby on Rails
แต่คุณรู้หรือไม่ว่าคุณเขียนเองได้
เขียนวิธีการช่วยเหลือของคุณเอง
หากคุณต้องการเขียนวิธีการช่วยเหลือแบบกำหนดเอง เส้นทางไดเรกทอรีที่ถูกต้องคือ app/helpers
.
คุณเขียนผู้ช่วยของคุณใน โมดูลตัวช่วย .
ทุกแอปพลิเคชัน Rails มาพร้อมกับโมดูลตัวช่วยพื้นฐานโดยค่าเริ่มต้น เรียกว่า ApplicationHelper
.
คุณสามารถเพิ่มวิธีการช่วยเหลือได้ที่นี่
วิธีการเหล่านี้จะใช้ได้กับทุกมุมมองของคุณโดยอัตโนมัติ หลังจากนั้น คุณจะได้เรียนรู้วิธีใช้ตัวควบคุมเหล่านี้ในตัวควบคุม และเหตุใดจึงอาจเป็นความคิดที่ไม่ดี
คุณสามารถเขียนผู้ช่วยทั้งหมดของคุณใน ApplicationHelper
.
แต่มีอีกทางเลือกหนึ่ง…
คุณสามารถสร้างโมดูลตัวช่วยเพื่อให้จัดระเบียบวิธีการได้ดีขึ้น
คำแนะนำ :
- สร้างไฟล์ใหม่ภายใต้
app/helpers
- ตั้งชื่อมันว่า
user_helper.rb
- เพิ่มโมดูลใหม่ที่ตรงกับชื่อไฟล์
ตัวอย่าง :
# app/helpers/user_helper.rb module UserHelper def format_name(user) if user.gender == "M" "Mr. #{user.name}" else "Ms. #{user.name}" end end end
รหัสนี้สามารถใช้เพื่อเรียกบุคคลอย่างเป็นทางการตามเพศของพวกเขาได้
ประโยชน์หลัก?
คุณไม่จำเป็นต้องใช้ตรรกะนี้ซ้ำในมุมมองอื่นๆ เมื่อคุณต้องการ &เมื่อคุณต้องการเปลี่ยนรหัส… จะต้องเปลี่ยนในที่เดียวเท่านั้น
ดีมาก!
การใช้โมดูลตัวช่วยใหม่ของคุณ
คุณสามารถใช้วิธีการช่วยเหลือของคุณในมุมมองของคุณ
ถูกใจสิ่งนี้ :
<%= format_name(@user) %>
ง่ายใช่มั้ย
หากคุณต้องการใช้ตัวช่วยนอกสายตา คุณจะต้องมีอย่างอื่น
วิธีใช้ผู้ช่วยจากผู้ควบคุม
เป็นไปได้แม้ว่าจะไม่ธรรมดามากนักที่จะใช้วิธีการช่วยเหลือจากการกระทำของผู้ควบคุม
ก่อน Rails 5 คุณต้องรวมโมดูลตัวช่วยด้วย
ในเวอร์ชันใหม่กว่า คุณสามารถใช้ตัวช่วยในตัวควบคุมของคุณด้วย helpers
(พหูพจน์) วัตถุ
ถูกใจสิ่งนี้ :
class UsersController def index helpers.time_ago_in_words(Time.now) end end
วิธีนี้คุณสามารถใช้ตัวช่วยจากคอนโทรลเลอร์ของคุณได้ แต่คิดให้รอบคอบก่อนทำเพราะอาจเป็นปัญหาด้านการออกแบบ
ลองใช้วัตถุ Ruby ธรรมดาแทน
สนุกกับคอนโซล Rails
ฉันชอบใช้คอนโซล Rails (irb เมื่อโหลดแอป Rails ของคุณ) เพื่อลองใช้วิธีการต่างๆ และทดลองกับสิ่งต่างๆ
รวมผู้ช่วยแล้ว!
คุณสามารถใช้ตัวช่วยจากคอนโซลด้วย helper.method_name
.
สังเกตรูปแบบเอกพจน์ของ "ผู้ช่วยเหลือ" เพื่อไม่ให้คุณได้รับข้อความแสดงข้อผิดพลาด และอย่าลืมว่าคอนโซลไม่รีโหลดโค้ดที่เปลี่ยนโดยอัตโนมัติ
แนวทางปฏิบัติที่ดีที่สุดสำหรับการเขียน Rails View Helpers
คุณควรสร้างวิธีการช่วยเหลือเมื่อใด
เมื่อใดก็ตามที่คุณมีตรรกะที่สร้างบิตของ HTML
โดยปกติ จะจัดอยู่ในประเภทใดประเภทหนึ่งจาก 2 หมวดหมู่ ประเภทหนึ่งคือการจัดรูปแบบสตริง และอีกประเภทหนึ่งคือองค์ประกอบหน้าตามเงื่อนไข
เคล็ดลับอื่น…
หากคุณต้องการเขียนตัวช่วยที่ดีอย่าใช้ตัวแปรอินสแตนซ์ใดๆ ตัวแปรเหล่านี้อาจพร้อมใช้งานในมุมมองปัจจุบันของคุณ แต่อาจไม่ได้อยู่ในมุมมองอื่น
ซึ่งจะส่งผลให้เกิดข้อผิดพลาดเนื่องจากไม่มีตัวแปร
วิธีแก้ปัญหา?
ใช้พารามิเตอร์ เพื่อให้ข้อมูลที่วิธีการของคุณต้องการชัดเจน &ชัดเจน .
# wrong way def eat_healthy @fruit.eat end # do this instead def eat_healthy(fruit) fruit.eat end
เคล็ดลับสุดท้ายของฉันคือการแบ่งผู้ช่วยของคุณออกเป็นโมดูล โดยแต่ละชื่อโมดูลจะอธิบายอย่างชัดเจนว่ามีวิธีใดบ้าง
อย่างไรก็ตาม :
วิธีนี้ไม่ช่วยเรื่องชื่อเมธอดที่ซ้ำกัน ซึ่งอาจส่งผลให้เกิดข้อผิดพลาดและความสับสน
ผู้ช่วยของคุณทุกคนควรมี ชื่อเฉพาะ .
ลองใช้ออบเจ็กต์พรีเซ็นเตอร์ตามที่อธิบายไว้ในคู่มือนี้แทน
สรุป
คุณได้เรียนรู้เกี่ยวกับตัวช่วยใน Rails แล้ว! ชุดวิธียูทิลิตี้ที่คุณใช้สำหรับการจัดรูปแบบและจัดการตรรกะที่ซับซ้อนในมุมมองของคุณได้
ถึงเวลาสร้างตัวช่วยของคุณเองแล้ว
ขอบคุณที่อ่านนะคะ 🙂