2013-10-01 2 views
0

저는 데이터로 수행해야 할 다양한 옵션이 많은 거대한 데이터베이스 (수백 기가 바이트)가있는 레일 애플리케이션이 있습니다. 어떤 경우에는 데이터 변경과 마찬가지로 Sidekq과 함께하는 백그라운드 작업에서 수행 할 수 있습니다. 그러나 많은 경우 행과 열 또는 복잡한 SQL 쿼리로 데이터를 보는 경우와 같이 데이터를 가져 오는 프로세스가 상당히 오래 걸립니다.레일스에서 ​​사용자에게 긴 요청을 어떻게 표시해야합니까?

내가하고 싶은 것은 사용자가 링크를 클릭 할 때 어떤 일이 일어나고 있는지 보여주는 것입니다. 진행 막대와 마찬가지로 많은 브라우저가 있지만, 더 명백한, 그래서 심지어 브라우저와 함께 일하는 데 익숙하지 않은 사람도 뭔가 일어나고로드가 나타납니다.

질문하는 방법입니다. 이미 AJAX와 jQuery에서 다른 옵션을 시도했지만 대부분의 경우 특정 작업에 대해서만이 작업을 수행 할 수 있지만 기본적으로 전체 응용 프로그램에 대해 수행하려고합니다. 따라서 사용자가 새 페이지를로드하라는 요청을 보낼 때마다 즉시 그 사람에게 뭔가 일이 일어나고 있음을 보여주고 싶습니다.

내가 가장 가까이 왔던 것은 항상 자바 스크립트였습니다. 문제는 문자 그대로 매번 발생하여 페이지를 다시로드해야한다는 것입니다. 이것은 요소를 토글 할 때 진행 막대를 표시 한 다음 페이지를 다시로드한다는 것을 의미합니다. 내가 무엇을 찾고 본질적으로

:

내 응용 프로그램 그래서 루비에서 실행 (4) 및 새 페이지 나 사용자가 자신의 요청이 처리되고 있음을 보여주고 싶은로드 될 때마다 레일 요청에 몇 초가 걸리는 경우에도 사용자는 무엇인가 일어나고 있음을 알고 있기 때문에 긴장하지 않을 것입니다. 내가 어떤을 찾을 수 없습니다 때문에

은 정말, 해결책을 찾기 위해 어떤 도움을 부탁드립니다 ...

+0

당신은 페이지로드의 나머지 부분에 분리되어 아약스 - 전화로 모든 데이터 요청을 할 수 있습니다. 이렇게하면 기본 페이지는 항상 "재전송"되고 페이지 콘텐츠 만 느리게 다시로드됩니다. 또한 페이지 콘텐츠를 가져올 때마다 로더 아이콘을 사용할 수 있다는 것을 의미합니다. js 등을 사용하여 페이지 레이아웃의 나머지 부분을 유지할 수 있기 때문입니다. –

답변

0

당신은 일이 일어나고 사용자에게 보여주기 위해 자바 스크립트 애니메이션을 사용합니다.

예를 들어

: http://ricostacruz.com/nprogress/

+0

그래서, 모든 링크와 버튼을 AJAX와 함께 사용하거나 응용 프로그램에서 Turbolinks를 통합 할 수 있습니까? AJAX가없는 솔루션이있을 거라 생각했기 때문에 ... – schneiderinho

+0

원하는대로. 목표는 로딩의 %를 추적하고 그것에 따라 진행 막대를 업데이트하는 것입니다. – Pol0nium

관련 문제