문제

나는 Ruby on Rails와의 웹 개발에 관한 AWDR 책을 겪고 있었고 이전 코드의 문제 중 하나는 사용 된보기가 JavaScript보기인지 확인하기 위해 Response_TO를 사용하지 않았다는 것입니다. 이제 업데이트 된 몇 가지 예제에서 사람들은 나중에 우아한 열화를 구현할 때 request.xhr를 사용해 주시겠습니까? 사용자가 JavaScript를 활성화했는지 여부를 알려주고 그렇지 않은 경우 사용자를 리디렉션합니다.

나는 당신이 반응을 사용하여 동일한 행동을 얻을 수 있는지 궁금합니다. 그렇다면 이것이 좋은 형태로 간주되는지 여부와 그 이유는 무엇입니까?

그래서 내가 생각하는 것은 다음과 같습니다.

def function
  respond_to do |format|
    format.js do
      basic_stuff
    end
    format.html do
      basic_stuff
      user_redirect
    end
  end
end

건식 원리를 위반하는 것처럼 보이며 사용자와 서버가 여기에서 어떻게 상호 작용하는지에 대해 무언가를 놓치고있을 것입니다. 솔직히 말해서 API 문서가 나에게 완전히 명확하게 만들지는 못했습니다.

도움이 되었습니까?

해결책

글쎄, 당신은 다음과 같이 리팩터 할 수 있습니다.

def function
  basic_stuff # executed regardless of the mime types accepted
  respond_to do |format|
    format.html do
      user_redirect
    end
  end
  # will fall back rendering the default view - which you should ensure will be js
end

request.xhr? 요청을 봅니다 X-Requested-With 헤더 ( "xmlhttprequest"가 포함되어 있는지 확인). respond_to 허용되는 마임 유형을 살펴 봅니다.

당신은 어떤 종류의 우아한 배정을 구현하는 데 사용할 수 있습니다.

하지만 당신은 사용할 수 없습니다 xhr? Ajax 호출이 해당 헤더를 설정하지 않는 한 우아한 탈지의 경우 (프로토 타입이 자동으로 수행).

더구나, respond_to XML, JSON, JS를 전송하는 유연성을 제공합니다. 같은 블록에서 나올 수 있습니다.

그래서 추천합니다 respond_to 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top