วิธีการใส่ label ให้ text_field สามารถทำได้ดังนี้ครับ
สร้างไฟล์ form_tag_helper.rb ใส่ไว้ที่ app/helpers
- module FormTagHelper
- def label_text_field(object, method, options = {})
- options[:temp_label] = method if method
- begin_html, end_html = wrapping_html(options)
- begin_html + text_field(object, method, options) + end_html
- end
- private
- def wrapping_html(options)
- label = options[:label] ? options.delete(:label) :options[:temp_label].to_s.titlecase
- options.delete(:temp_label)
- generated_html = ""
- generated_html << "<div>"
- generated_html << "<label>#{label}</label>"
- generated_end_html = ""
- generated_end_html << "</div>"
- return generated_html, generated_end_html
- end
- end
จากนั้นใส่ include ApplicationHelper ไว้ใน application.rb ด้วยครับ
เวลาเอาไปใช้เราแค่ใส่สั้นๆ ใน view แบบนี้ครับ
- <% label_text_field :quotation, :cname, :label => "creater name" %>
ถ้ามีให้ใส่หลาย field จะยิ่งคุ้มมากๆ และในกรณีที่เราตั้งชื่อ field ดีๆ เราสามารถเขียนแค่
- <% label_text_field :quotation, :creater_name %>
เป็นการลด code เพิ่มความเข้าใจ และลดความเสี่ยงที่จะเกิด bug ไปในตัว
ฟังก์ชัน wrapping_html สร้างไว้เพราะในการใช้งานจริงเราไม่ได้มี label_text_field แค่อันเดียว เราอาจจะต้องมี label_text_area label_live_search label_text_field_require ด้วย เวลาแก้ไขจะได้แก้ที่เดียว
สำหรับสร้างฟอร์มแบบนี้ใน rails 2.0 ( f.label_text_field ) ลองดูที่ customize text_field นะครับ
Post new comment