Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีใช้ Rails Helpers (คู่มือฉบับสมบูรณ์)

ตัวช่วยใน 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 แล้ว! ชุดวิธียูทิลิตี้ที่คุณใช้สำหรับการจัดรูปแบบและจัดการตรรกะที่ซับซ้อนในมุมมองของคุณได้

ถึงเวลาสร้างตัวช่วยของคุณเองแล้ว

ขอบคุณที่อ่านนะคะ 🙂