문제

고 싶은 업로드한 다음 프로세스 파일에서 루비 레일 앱입니다.파일 업로드는 일반적으로 매우 짧지만,서버의 처리 시간이 걸릴 수 있습니다(20 초)동안 그래서 내가 원하는 사용자가 어떤 표시보다 더 나은 뭔가 의미'...처리'화면입니다.

내가 사용하려고 다음과 같은 코드 보기

<%= periodically_call_remote(:url => {:action => 'progress_monitor', :controller => 'files'},
                 :frequency => '5',
                 :update => "setProgress('progressBar','5')"
                 ) %>

컨텐츠의 업데이트 매개 변수한 자바스크립트가 실행하려면 5 초마

다음 코드는 파일에서 컨트롤러

def progress_monitor
  render :text => 'whatever'
end

결국 progress_monitor 방법을 반환합니다 현재 진행 상황을 정수로(%)에 것으로 전달'려면 setprogress'JavaScript 코드(는 것입 업데이트 화면에서 요소)

그러나 나는 어려움을 겪고 올바른 응답에서 서버에서는 전달될 수 있습으로 자바 스크립트.

사람이 도움이 될 수 있습니다,또는 나는 이것에 접근하는 잘못된 방법?

가 후속 질문이 난 원래는데 이 질문은 하지만 업데이트가 충분히 다른을 보증하기 위하여 새로운 질문 .

도움이 되었습니까?

해결책

periodically_call_remote() 업데이트 a div. JavaScript 기능을 호출하지 않습니다. 나는 자바 스크립트 전문가가 아니지만 문제를 해결하려면 스스로해야합니다. xmlhttp 전화. 내가 당신이라면 프로토 타입의 Ajax 요청을 사용할 것입니다.

http://www.prototypejs.org/api/ajax/request

JavaScript의 Settimeout 또는 SetInterval을 사용하여 정기적 인 폴링을 수행하십시오.

http://www.elated.com/articles/javaScript-timers-with-Settimeout-and-SetInterval/

이것이 실제로 동일한 PRB를 만난 COS에 도움이되기를 바랍니다 =)

다른 팁

:update 옵션해야만 목록 div 업데이트할지에서 자바스크립트가 원하는을 평가합니다.

레일 도우미들은 여전히 매우 좋은 이 상황에 대한 필요는 없을 쓰고 많은 사용자 지정 JS.하고자하는 경우 실행 JS 에서 반환,쉬운 방법은 것을 렌더링하는 RJS 템플릿입니다.하고자하는 경우 그것으로 순수한 HTML,단순히 렌더링기(또는 부분 또는 반환에서 직접 render 방법과 HTML 의 진행 bar)에 넣어 div 의 진행 표시줄에 :update 옵션 periodically_call_remote 방법입니다.

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