วันพุธที่ 2 มิถุนายน พ.ศ. 2553

Render vs Redirect_to

render vs redirect_to in Rails
เนื่องจากมีcaseหนึ่งซึ่งพอจะอธิบายความแตกต่างระหว่าง render กับ redirect_to ได้ พอสรุปได้ดังนี้
ขออธิบายก่อนแล้วกันค่อยดูตัวอย่าง
ถ้าเป็น render =>เราจะไป render view template ภายใน หน้า .rhtml นั้นเลย โดยไม่มีการผ่าน actionใน controller นั้นก่อน แต่ถ้าเป็น redirect_to จะเหมือนกับเรามีการส่งrequest ใหม่ๆเลย มันก็จะไปยัง action ในcontroller แล้ว ก็จะไปrender view template นั้นอีกที ถ้าถามว่าผลลัพธ์มันต่างกันไหม ? บอกเลยว่าต่างมาก เนื่องจากมันไม่ผ่านaction ในcontrollerก่อน อยู่ๆก็ไป render view templateเลย หากเรามีการประกาศตัวแปรในcontroller แล้วแสดงผลใน viewก็จะำำไม่แสดง
ตัวอย่างเช่น
def index
render :action=>:test
end

def test
@test="hello world"
end

ใน test.rhtml
-----------------------------------------
<%=@test %>

ถ้าเป็น render จะำไม่แสดงผลออกเนื่องจากไม่ได้ execute

ถ้าเป็น redirect_to จะแสดงค่าออกมา คือ "hello world"
ลองดู
def index
redirect_to :action =>:test
end
----------
จะได้ hello world

ไม่มีความคิดเห็น:

แสดงความคิดเห็น