วันอาทิตย์, สิงหาคม 24, 2551

เขียน Helper ช่วยในการสร้าง form

วิธีการใส่ 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 << "
" generated_html << "" generated_end_html = "" generated_end_html << "
" 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](http://apirak.com/?q=node/4) นะครับ
blog comments powered by Disqus