2012-01-12 9 views
1

私はhtmlでユーザープロファイルを表示するコントローラーを持っています。JSONを介してユーザーホバーカードwプロファイル情報を表示します。コントローラの要求タイプを検出しているレールはありますか?

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

+0

@AnApprentice何をフォローしていないのですか? –

関連する問題