rails render

本文介紹了Rails應用中如何使用render方法來返回不同格式的數據,包括文本、XML、JSON等,並解釋了如何通過參數來自定義render行為。此外,還討論了redirect_to的用法及單個Action中render與redirect_to的使用限制。

Render結果

在根據request資訊做好資料處理之後,我們接下來就要回傳結果給用戶。事實上,就算你什麼都不處理,Action方法裡面空空如也,甚至不定義ActionRails預設也還是會執行render方法。這個render方法會回傳預設的Template,依照Rails慣例就是app/views/{controller_name}/{action_name}。如果找不到樣板檔案的話,會出現Template is missing的錯誤。

當然,有時候我們會需要自定render,也許是指定不同的Template,也許是不需要Template。這時候有以下參數可以使用:

直接回傳結果
  • render :text => "Hello" 直接回傳字串內容,不使用任何樣板。
  • render :xml => @event.to_xml 回傳XML格式
  • render :json => @event.to_json 回傳JSON格式(再加上:callback就會是JSONP)
  • render :nothing => true 空空如也
指定Template
  • :template 指定Template
  • :action 指定使用該ActionTemplate(注意到只是使用它的Template,而不會執行該Action內的程式)
  • :file 指定Template的檔名全名
其他參數
  • :status 設定HTTP status,預設是200,也就是正常。其他常用代碼包括401權限不足、404找不到頁面、500伺服器錯誤等。
  • :layout 可以指定這個ActionLayout,設成false即關掉Layout

補充一提,在特定情況你想把render的結果存成一個字串,例如拿到局部樣板Partials成為一個字串,這時候可以改使用render_to_string :partial => "foobar"

Redirect

如果Action不要render任何結果,而是要使用者轉向到別頁,可以使用redirect_to

  • redirect_to :action => "show", :id => @event
  • redirect_to :back 回到上一頁。

注意,一個Action中只能有一個render或一個redirect_to。不然你會得到一個DoubleRenderError例外錯誤。

转载于:https://www.cnblogs.com/wangyuyu/p/3517595.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值