หลังจาก extend ตัว form_for มาได้ซักพัก ตอนนี้เจอโจทย์ว่าต้องสร้าง helper ที่มีตัวเปิดหัวปิดท้ายประมาณว่า
ส่วนที่อยู่ตรงกลางเราให้คนใช้ ใส่กันเอง ประมาณนี้
- <% label_wrapping do %>
- ....
- <% end %>
ถ้าเรามี code ที่ต้องเขียนแบบนี้ซ้ำๆ โดยเฉพาะพวกหน้า form การเขียนย่อได้แบบนี้จะช่วยลด code ได้มาก และช่วยให้การแก้ไขในภายหลังทำได้จากจุดเดียวด้วย
วิธีการคือสร้าง Helper ประมาณนี้ครับ
- def label_wrapping(options, &block)
- begin_html = %{<div class="label"><p>}
- end_html = %{</p></div>
- content = capture(&block)
- concat(begin_html, block.binding)
- concat(content, block.binding)
- concat(end_html,block.binding)
- end
สิ่งที่ return ออกมาคือ HTML ที่ถูก code ของเราครอบไว้แล้ว