สรุปวิธีการได้ดังนี้
โจทย์
เราจะลองสร้าง web application ที่ provide
ข้อมูล contact ให้กับผู้ร้องขอ โดยให้ format
กลับมาเป็น xml
- สร้าง application
โดยใช้คำสั่งrails contactApp
ซึ่งเป็นการสร้าง framework structure ขึ้นใน
directory contactApp - สร้าง controller สำหรับรับ request
ให้ cd ไปยัง directory contactApp ที่ rails generate ให้
จากนั้นสั่งสร้าง controllerruby script/generate controller xml
จะได้ file xml_controller.rb ใน directory app/controllers - implement action
ในที่นี้จะลองสร้าง action ที่ชื่อ list
ซึ่งทำหน้าที่แสดงรายการ contact ทั้งหมดกลับไปในรูป xmlclass XmlController < ApplicationController
def list
@contacts = Contact.find_all
@headers["Content-Type"] = "text/xml; charset=utf-8"
render :action=>'list', :layout => false
end
end
step การทำงานก็คือ select ข้อมูล
ทั้งหมดของ contact ขึ้นมาจาก database
ใส่ไว้ใน class attribute ที่ชื่อ contacts
จากนั้นก็ set content-type ของ response
ให้เป็น text/xml
สุดท้ายก็ dispatch ไป render โดยใช้ view ที่ชื่อ list
โดยระบุไม่ให้ layout component ทำงาน
(layout จะทำหน้าที่ generate ส่วนที่
ใช้ซ้ำๆกันใน view เช่น พวก header, footer
ของ page) - สร้าง view ที่ชื่อ list.rxml
สังเกตุว่านามสกุลเป็น rxml เนื่องเป็น
template ที่ช่วยในการ generate xml
(template นี้ใช้ builder module
ในการ generate xml)
ภายใน list.rxml มีเนื้อหาดังนี้xml.instruct! :xml, :version=>"1.0"
xml.contacts do
@contacts.each do |contact|
xml.contact(:name=>contact.name, :email=>contact.email)
end
end
ทดลองเรียกใช้งาน
โดยส่ง request ไปยัง url "http://host:port/xml/list"
(เป็นการเรียกใช้ action list ที่อยู่ใน xml controller)
ผลลัพท์ที่ได้
<?xml version="1.0" encoding="UTF-8"?>
<contacts>
<contact name="polawat phetra" Email="pphetra@x.hotmail.com"/>
<contact name="prapapan phetra" Email="cprapapan@y.yahoo.com"/>
<contact name="pann phetra" Email="pann@pokhome.com"/>
</contacts>
No comments:
Post a Comment