2012-01-12 57 views
1

我有一個控制器,通過HTML顯示用戶配置文件,通過JSON顯示用戶將鼠標懸停卡,帶個人資料信息。Rails在控制器中檢測請求類型?

class UsersController < ApplicationController 

    def show 
    @user = User.where(:id => params[:id]).first 

    return redirect_to "/" if @user.nil? 

    respond_to do |format| 
     format.html { render :layout => 'application' } 
     format.json { render :json => @user.to_json } 
    end 
    end 
end 

問題是,當用戶沒有找到它重定向它通過HTML偉大的工程,但導致與JSON的錯誤。有沒有一種乾淨的方式讓重定向只發生在HTML請求中?什麼是正確的軌道,乾淨的方式來處理這個問題?

謝謝

回答

4

如果格式處理程序不適用於所有格式,請將檢查置於格式處理程序中。或者讓您重定向的路徑返回JSON格式有意義的內容。

這有點用戶敵對不提供有關請求失敗的原因的任何信息重定向 - 這似乎是一個問題,更好地呈現有意義的,而不是對所有的格式重定向解決。

(您不需要指定應用程序的佈局,實際上,它的默認值)

澄清迴應發表評論(我認爲):

每種格式的塊只是那個:塊。它們可以包含任意代碼,例如:

respond_to do |format| 
    format.html { @user.nil? ? redirect_to "/" : render } 
    format.json { render :json => @user.to_json } 
end 

也許不是最乾淨的,部分原因是因爲我認爲這是錯誤的方式來處理它擺在首位。

+0

不知道我在下面的怎麼樣? – AnApprentice 2012-01-12 20:02:16

+0

@AnApprentice沒有關注什麼? – 2012-01-12 20:05:10