2012-01-12 2 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 형식에 의미있는 것을 반환 할 수 있습니다.

요청이 실패한 이유에 대한 정보를 제공하지 않고 리다이렉트하는 것은 다소 사용자에게 적대적입니다. 모든 형식의 리디렉션보다는 의미있는 렌더링으로 문제를 해결하는 것이 좋습니다.

(. 당신은 정말, 그것은 기본의 응용 프로그램 레이아웃을 지정할 필요가 없습니다) 응답

대한 설명은 (내가 생각하는) 댓글을 각 형식에 대한

블록은 단지입니다 that : 블록. 그들은 내가 그것을 먼저 그것을 처리 할 수있는 길을 잘못 생각 부분적으로 있기 때문에, 임의의 코드, 예컨대 : 아마도

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

없는 깨끗한 포함되어있을 수 있습니다.

+0

잘 모르겠습니다. 어떻게해야합니까? – AnApprentice

+0

@AnApprentice 다음 내용을 따르지 않습니까? –