2017-03-04 7 views
1

こんにちはスタックオーバーフローが、動作していないコンテンツネゴシエーションはrespond_toスタンザで

def show 
    # Translating ID to event 
    @event = Event.find(params[:id]) 
    respond_to do |format| 
    format.html 
    format.json { render :json => @event } 
    end 
end 

べきたびAcceptヘッダがtext/htmlに設定されている場合、HTML応答を生成し、JSON(私がオンラインで読む内容に応じて)このコードヘッダーはapplication/jsonに設定されています。しかし、私がPostmanでこれをテストするたびに、私はいつも最初に設定されたリソースの表現を得ることになります。

acceptヘッダーがJsonのみに設定されている場合でも、上記のコードではhtmlになります。私がそれらを回すと、私はヘッソンを何を設定するかに無関係に、json表現を得る。

私はRubyを少し新しくしており、do |x| do_a() do_b()構文/スタンザが何であるかを完全に理解したいと思います。これはSwitch文またはそれ以上のラムダのようなものですか?

+0

'?format = json'または' .json'をURLに追加しましたか?そうであれば、Acceptヘッダがそうでない場合でもフォーマットはjsonになります。 – yoones

+0

@Yoonesいいえ、私は持っていません。しかし、クライアントが無限の形式で1つのURL上のリソースを要求できるというコンテンツネゴシエーションのポイントはありませんか?例:Accept:text/htmlのdomain.com/myPoemは、人間が読めるHTMLバージョンとdomain/myPoemをAcceptで返すべきです:application/jsonは私のbeautifull poemをJSON表現で返しますか? – MrKickkiller

+0

あなたは正しいですが、あなたのアプリケーションのルートで、必要に応じて( 'rake routes'を実行するときに表示される'(。:format) ') – yoones

答えて

1

ソリューションは明らかに私が代わりに適切なAcceptヘッダーで、GETリクエストでのContent-Typeヘッダを送信したため

私の脳はちょうど、2日間与えました。

Thx私を助けようとしている@Yone: