Rails:render partial

From Blognone

Jump to: navigation, search

คำสั่ง render เป็นเหมือนคำสั่งสร้าง HTML ออกมา

ในกรณีที่อยู่บน View render ก็เหมือนการนำไฟล์ที่กำหนดใน partial มาแทรก

<%= render :partial => "person", :locals => { :name => "david" } %>

แต่ถ้าอยู่บน controller จะเหมือนการกำหนดว่า controller นั้นให้ return HTML หรือไฟล์ที่ partial ตามที่เราจะกำหนด

...
render :partial => "person", :locals => { :name => "david" } %>

ในตัวอย่างข้างต้น render จะไปเรียกไฟล์ _person.html.erb และเราสามารถนำค่า name ไปใช้ได้เลย

<!-- _person.html.erb -->
<H1>Hello <%= name %></H1>

การใช้ :locals เราจะส่ง hash ไปให้กับ partial ซึ่งใส่ได้มากกว่าหนึ่งค่า

render :partial => "person", :locals => { :name => "david", :surname => "source", :sun => @sun }

การใช้ :object เราจะส่ง Object หนึ่งตัวไปให้กับ partial โดยเราจะเรียกใช้ object ตัวนั้นผ่าน variable person

render :partial => "person", :object => @new_person
<!-- _person.html.erb -->
<H1>Hello <%= person.name %></H1>

การใช้ :collection เราจะส่ง Object ใน array ไปให้กับ partial ทีละตัว

render :partial => "person", :collection => @winners

มีค่าเท่ากับ

@winners.each do |winner|
    render :partial => "person", :object => winner
end

การใช้ :status เป็นการส่งค่า status code ค่า 500 (internal error) ออกไป ซึ่งโดย default จะไปเรียกไฟล์ /public/500.html

render :partial => "broken", :status => 500