หน้าเว็บ

วันอังคารที่ 19 กรกฎาคม พ.ศ. 2559

ลองใช้เมธอดใน ActionView::Helpers จาก rails console



ActionView::Helpers เป็นโมดูลที่มีเมธอดที่เกี่ยวกับการแสดงผลใน view อยู่เยอะมาก แต่ละเมธอดนี่มีลักษณะเป็น “Magic” แทบทั้งนั้น
ผมเป็นคนนึงแหละที่ไม่คุ้น และไม่ค่อยชอบเท่าไหร่กับความเป็น “Magic” ที่ถูกออกแบบมาแบบนั้น เอาซะเลย
เกิดความรู้สึกอึดอัดทุกครั้งที่จะเรียกใช้เมธอดแต่ละที ถึงแม้ว่ามันจะเป็นเมธอดง่ายๆ อย่าง link_to หรือ image_tag ก็ตาม
แต่ทำไงได้ ถ้าคิดจะใช้ Rails เราก็หนีไม่พ้นที่จะต้องเรียกใช้เมธอดเหล่านี้ อย่างหลีกเลี่ยงไม่ได้

ทางที่ดีที่สุดก็คือเข้าไปทำความเข้าใจกับมันเลยดีกว่า ว่าเมธอดพวกนี้ทำงานยังไง เข้าไปค้นหาความจริงว่ามีอะไรเกิดขึ้นบ้างเมื่อ Magic ถูกเรียกใช้

มีความรู้สึกว่า คิดถูกแล้ว ที่ยอมเสียเวลาค้นหาความจริง เพราะว่าหลังจากที่ไปไล่ดู document ใน api.rubyonrails.org ก็พบว่า document นั้นทำไว้ค่อนข้างดีถึงดีมาก มีคำอธิบายรายละเอียดพร้อมตัวอย่างของแต่ละเมธอดไว้ครบถ้วน

ไล่ดูไปเรื่อยๆ กลับรู้สึกว่า Magic มันไม่ได้เลวร้ายอย่างที่คิด เรากลับคิดว่าเมธอดที่เขาออกแบบมามันกลับดูดี มีเหตุมีผลไปซะงั้น

เมฆหมอกของความกลัวและความไม่รู้ ค่อยๆ จางลงไป ความเข้าใจค่อยๆ เข้ามาแทนที่

พอค้นคว้าเพิ่มอีกเล็กน้อยก็รู้ว่าเราสามารถ ทดลองเล่น ทดลองใช้ เมธอดพวกนี้ผ่านทาง Rails Console ได้เลย โดยใช้เรียกใช้ผ่านอ็อบเจกต์ helper ดังตัวอย่างด้านล่าง

$rails console
Loading development environment (Rails 5.0.0)
irb(main):001:0> helper.tag("br")
=> "
"
irb(main):002:0>


อีกตัวอย่างที่ผมทดลองเล่นใน console โดยลองเพิ่ม srcet เข้าไปเวลาเรียกใช้เมธอด image_tag ซึ่งทำแบบถึกๆ ได้ดังนี้

irb(main):017:0>helper.image_tag(“photo.jpg”, {class: “photo”, srcset: "#{helper.image_path("photo-small.jpg")} 480w"})
=> "< img class=\"photo\" srcset=\"/images/photo-small.jpg 480w\" src=\"/images/photo.jpg\" alt=\"Photo\" />"
irb(main):018:0>


ลองเล่นดูนะครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น