2011年7月25日

RoR -respond_to

respond_to 會根據使用者傳來的格式進行不同回應


格式為

respond_to do |format|

format.html {動作...}
format.xml {動作...}
format.附檔名3 {動作}

end

或有人有疑問format參數是怎麼來的,在系統預設他便是在路徑中傳遞
預設為.html

respond_to常用的搭配指令為

render 代表回傳訊息

redirect_to 代表導向頁面

因為render是系統預設回傳,在scaffold出來的程式,甚至可以看到

respond_to do |format|

format.html
end

的寫法,不是沒傳參數,而是此時系統會到預設的版模去抓(ror充滿這樣的預設)
如改成

format.html {render :text => "test"}

就會在顯示時出現
"test"

一般系統會輸出的格式html
要測試這樣的程式,不妨在視窗打入實際位址,比方
/msg/new.html
就會顯示出一般的畫面
msg/new.xml
就會顯示出系統對應的xml

比方輸入/msg/new.xml
會出現

<msg>
<name nil="true"/>
<created-at type="datetime" nil="true"/>
<updated-at type="datetime" nil="true"/>
<content nil="true"/>
</msg>


一些render能搭配的參數
:text  #傳文字
:xml   #傳xml
:json  #傳json
:nothing #不傳
:template #樣版的檔名
:action #針對某個action預設的回傳頁面(不執行動作)
:status 傳200(正常) 404 這樣的訊息

有空不妨玩玩看

沒有留言:

張貼留言