2011-12-05 5 views
0

respond_to을 레일로 사용하여 여러 매개 변수를 전달할 수 있습니까? 하나 이상의 인스턴스 변수가있을 때 오류가 발생합니다. 하지만 나는 여러 매개 변수 (instance variables)를 통해 respond_torespond_to로 여러 매개 변수 전달

답변

1

respond_to를 통해 전달해야하는 시나리오가 실제로 단 하나의 결과만을 반환한다고 가정합니다. HTML 템플릿 렌더러는 한 가지만 반환하지만 여러 인스턴스 변수를 HTML에 포함합니다.

기본적으로 Json과 XML에 대해 동일한 작업을 수행해야합니다. 모든 데이터가 포함 된 단일 개체를 생성하십시오.

예는이 코드가 될 것이다 :

당신이 JSON을 통해 이러한 여러 값이 반환 할 것을 포함하는 단일 JSON 객체를 정의 할 필요가 출력하고자하면
def show 
    @post = Post.first 
    @users = Users.where(:active => true) 
    respond_to do |format| 
    format.html #this will simply render the view 
    format.json { render :json => { :post => @post, :users => @users } } 
    end 
end 

.

이 예에서는 게시물과 사용자가 포함 된 Json 개체이므로 호출자에게 HTML보기를 제공 할 때와 동일한 정보를 제공합니다.

는 결과 JSON은 다음과 같습니다

{ 
    post: {..}, 
    users: [..] 
} 

업데이트 :

당신이 script.js.erb 당신이 통과하지 않아도이 자바 스크립트 렌더링하려면이 옵션을 사용하는 경우 responds_to에 아무 것도 쓰지 않고 보통 HTML보기에서와 같이 < % = %> 구문을 사용하여 js.erb 파일에서 모든 인스턴스 변수 (접두사 @)를 사용할 수 있습니다.

+0

문제점은 format.js와 관련이 있습니다. 내 시나리오는 작성 액션에서 게시물 객체를 보내야하는 것과 같은 방식으로 새로운 코멘트 양식을 작성하는 새 주석 객체가 있어야합니다. 따라서 새로 생성 된 게시 개체와 새 메모 개체가 필요합니다. – Rahul

+0

일부 샘플 코드로 답을 편집 할 수 있습니까? 무슨 뜻인지 모르겠다. – Tigraine