Rails 3 애플리케이션 용 JSONP API를 만들려고합니다. 지금 내 컨트롤러에서 나는이 패턴에 따라 행동을 많이 가지고 :이 그대로 작동하지만respond_with와 같은 메소드를 오버라이드하여 Rails 3 컨트롤러를 마르는 방법?
# This is from my users_controller.rb, as an example
def index
@users = User.all
respond_with(@users, :callback => params[:callback])
end
을, 나는 respond_with
에 모든 행동의 호출에서 :callback => params[:callback]
을 반복하지 않아도하여 건조하고 싶습니다 . 어떻게해야합니까?
업데이트 : 그건 내 위의 코드에 대한 추악한 실현 한 것은이 :callback => params[:callback]
옵션은 어떤 응답 형식뿐만 아니라 JSON을 위해 전달 될 것입니다. 다음 코드는 아마 더 정확 :
def index
@users = User.all
respond_with(@users) do |format|
format.json { render :json => @users, :callback => params[:callback]}
end
end
이 나는이 문제를 해결하기 위해 고려 한 몇 가지 방법이 있습니다,하지만 난 그들에게 작업하는 방법을 알아낼 수 없습니다 :
- 재정의
render
(아마도 응용 프로그램 컨트롤러에서):callback => params[:callback]
매개 변수를 자동으로 포함하는:jsonp
옵션을 사용할 수 있습니다. 이 방법 나는 약간 짧은 다음에 위의 코드를 변경할 수 있습니다 :
def index
@users = User.all
respond_with(@users) do |format|
format.json { render :jsonp => @users}
end
end
- 내 문제를 해결하기 위해
to_json
을 재정의하는 응답을 만듭니다. 그렇게하면 블록을 생략하고respond_with(@users, :responder => 'MyResponder')
으로 전화하여 문제를 해결할 수 있습니다. 또는 plataformatec's responders gem을 사용하는 응용 프로그램 응답자에이 코드를 포함하여respond_with(@users)
만으로도 충분할 수 있습니다.
감사합니다. 아주 좋은 지적입니다! – evanrmurphy