[Ruby on Rails] Nested Model Form Wrapper
Nested Model Form คือ Dynamic Form ที่สามารถเพิ่ม/ลบ จำนวนของ Form นั้นๆ ได้
หน้าตาจะประมาณนี้ครับ :)
ซึ่งวิธีการทำนั้นก็ไม่ยากครับ มีสอนเสร็จสรรพที่ RailsCasts
หน้าตาจะประมาณนี้ครับ :)
ซึ่งวิธีการทำนั้นก็ไม่ยากครับ มีสอนเสร็จสรรพที่ RailsCasts
แต่มันมีวิธีง่ายกว่านั้น เพราะคุณ RyanB เขียน Open-source Wrapper ให้ใช้ และมันใช้ง่ายมาก
เลยจะมาแนะนำครับ :)
ขั้นแรกก็ไปเพิ่ม Gem ที่ GemFile และ include jQuery ที่ application.js ด้วยครับ
gem 'nested_form'
//= require jquery_nested_form
วิธีการใช้งานนะครับ
ใน Controller ก็สั่ง Build ได้ด้วยนะ แบบอาจจะมีสักอันเพื่อ Guide User ก่อน
จากนั้นใน Form เราจะเขียนแบบนี้
เท่านี้แหละครับ เพราะทาง Developer เค้าจัดการเรื่อง Javascript ให้เราแล้ว :) ใช้ง่ายมาก แนะนำๆ
ส่วนใครใช้ SimpleForm หรือ Formtastic ก็รองรับเช่นกัน
โดยเปลี่ยน nested_form_for เป็น simple_nested_form_for, semantic_nested_form_for
ถ้าเราจะจำกัดให้ User สามารถเพิ่ม Form ได้จำกัด เช่น ไม่เกิน 5 อันก็มีวิธีเช่นกัน
ให้นำ Script นี้ไปใส่ใน View ที่มี Nested Form อยู่ (กรณีนี้คือมี Nested Form เพียงชุดเดียว)
โดยเมื่อมีจำนวน Field ถึงจำนวนที่กำหนดแล้วปุ่ม add จะหายไป :)
สามารถเปลี่ยน 5 เป็นค่าอะไรก็ได้ (แล้วแต่จะจำกัด หรือ Pass Value จาก Rails โดยใช้ ERB Tag ได้เลย)
Comments
Post a Comment