2009-06-15 3 views
1

코드 작성을 시작하기 전에 이보다 더 나은 논리를 얻으려고합니다.레일 : 새 메시지로 페이지를 업데이트하려면 어떻게해야합니까? Ajax를 통해? Jquery?

백그라운드 프로세스를 통해 새 메시지를 수집하는 모델이 있습니다. (따라서 데이터베이스는 모든 메시지로 2-3 분마다 업데이트됩니다.

사용자가받은 편지함으로 이동하면 모든 현재 메시지가 표시됩니다. 이것은 나를 위해 쉽습니다 :

@user = User.find(params[:id]) 
@user.messages 

그리고 나는 페이지에 사용자의 현재 메시지를 표시합니다.

그러나 사용자가 해당 페이지 (또는 다른 페이지)에있는 동안 메시지가 들어오는 경우 전체 페이지를 새로 고치지 않고 새 메시지가있는 페이지를 어떻게 업데이트 할 수 있습니까? 나는 이것이 ajax (periodic_call_remote?)를 통해 이루어질 수 있다는 것을 알고있다. 하지만 나는 에만에만 들어오는 새 메시지 만 강조 표시 (깜박임/깜박임)하고 싶습니다.

내 주위를 둘러보기려고합니다. 현재 해결 방법은받은 편지함에 부분 메시지를 사용하는 것입니다. 그러나 "NEW"메시지로 페이지를 주기적으로 업데이트하려면 어떻게해야합니까? 말하면 2 분마다 확인하십시오.

아이디어가 있으십니까?

답변

1

메시지에 타임 스탬프가 있으면 새 메시지 ID의 일부로 사용할 수 있습니다 (HTML ID는 숫자로 시작하지 않아야 함). 이렇게하면 해당 메시지를 페이지에서 고유하게 식별하고 JavaScript 등을 사용하여 강조 표시 할 수 있습니다.

+0

흥미로운 요한입니다. 나는 "모든 새 메시지"를 찾을 수 있도록 레코드에 타임 스탬프를 의도적으로 지정했습니다. (마지막 "갱신"호출보다 긴 시간 소인이있는 메시지). 그러나 각 ID가 다를 경우 고유 식별 방법을 추가하는 방법은 무엇입니까? (각 "새로운"메시지는 다른 타임 스탬프를 가질 수 있기 때문에). 확실한지 모르겠다면 ... –

+0

그리고 나서 페이지가 새로 고쳐집니다 ... 아마도 periodic_call_remote가 충분하다고 생각할 것입니다. 그냥 큰소리로 여기에서 생각해보십시오 ... –

+0

Ah ha! 그냥 내 코멘트를 다시 읽고, 처음에는 당신을 따르지 않았지만 생각이 나는 것 같아요. 모든 id의 * new * 메시지에 timestamp를 추가하고 그런 식으로 강조 표시합니다. 그게 효과가 있는지 알게 될거야. –

0

왜주기 관찰자를 사용하지 않습니까? (X 분마다 앱을 폴링하는 앱)

관련 문제