2014-02-14 92 views
3

在API控制器中響應的最簡單/最短的方式是什麼?目前以下工作:Rails使用狀態呈現模板

respond_to do |format| 
    format.json { render 'client', status: :ok } 
end 

然而該控制器將只以JSON(respond_to代碼:JSON)迴應|格式,所以整個的respond_to做|事情似乎是不必要的代碼。

理想我只想做喜歡的事,很簡單:

render 'client', status: :ok 

更新: 我忘了提及的是:「客戶」是不符合我的動作名稱的JBuilder的模板。

+0

更好的方法是使用respond_with:http://apidock.com/rails/ActionController/MimeResponds/respond_with –

+0

在上面的例子中,如何使用respond_with? – TrevTheDev

回答

4

您可以使用渲染直接

render json: 'client', status: :ok 
+0

我應該更清楚一點:客戶端是我想呈現的jbuilder模板。你提出的解決方案將返回一個JSON字符串'client' – TrevTheDev

3

據@hassasin,你可以指定你的控制器render json:格式在控制器的每一個動作。

其他選項是利用您的config.routes.rb來設置控制器的整個響應格式,例如, contacts_controller

resources :contacts, defaults: {format: :json} 

如果你想表示status,它添加到你的行動:

def index 
    render status: :ok # 200, 400, 500, what ever you want 
end 

我測試上面的Rails 3.2.16

我希望它可以幫助你的代碼。

1

由於您使用的是json視圖(假設您使用的是jbuilder),如果您的操作名稱與視圖名稱匹配,則不需要該渲染語句。

+0

謝謝史蒂夫,不幸的是我的視圖名稱不能匹配我的操作。 – TrevTheDev

+0

然後只是做一個渲染。就這樣。無需指定格式。 –