2013-06-04 1 views
0

"섹션"의 "개정"에 첨부되는 주석 양식이 있습니다. 개정이 없으면 빈 개정이 작성됩니다. 덧글 추가 양식은 아약스와 함께로드됩니다. 문제는 페이지를 새로 고치지 않고 여러 주석을 추가하면 여러 개의 빈 버전이 만들어집니다. 이것은 특정 경우에 혼란을 야기합니다.새 메모 w/ajax-owner_id 페이지가 새로 고침 될 때까지 요청 매개 변수가 없음

덧글 추가 버튼을 누를 때마다 아약스로 새로운 덧글 덧글 양식을 요청합니다. 그러나 Rails는 새로운 정보가 없으며 수정되지 않은 서비스를 제공한다고 생각합니다. 새로운 정보가 있습니다 - 두 번째 요청의 주석 양식에는 첫 번째 주석으로 작성된 빈 개정판의 ID 인 채워진 "owner_id"가 있어야합니다.

전체 페이지를 새로 고침하면 문제가 해결되므로 owner_id 채우기가 효과적이라고 생각합니다. 나는 이것이 서버 캐시 문제라고 생각했지만 요청의 매개 변수를 살펴보면 페이지가 새로 고침 될 때까지 owner_id가 누락되었습니다.

업데이트 : comments 컨트롤러의 새로운 작업에 expire_now()를 추가했으며 현재 200 개의 응답을 제공하지만 콘텐츠에는 여전히 owner_id가 없습니다.

다른 업데이트 : 콘솔에서 볼 때 요청의 매개 변수에는 owner_id가 포함되지 않습니다. 페이지 새로 고침 다음 양식을 요청하는 갑자기 매개 변수에 owner_id가 포함됩니다.

답변

0

아직 자세한 내용은 확실하지 않지만, 아약스 요청은 여러 가지 방법으로 페이지 요청과 다릅니다. 예를 들어, 컨트롤러 코드는 ajax가있는 뷰를 요청할 때 업데이트되지 않습니다. 필자의 경우에는 owner_id가 아약스 뷰의 채워진 매개 변수가 아니라는 차이점도있다.

주석 컨트롤러에 대한 새로운 작업에서 수동으로 해당 섹션을 쿼리하여 개정판이 있는지 확인해야합니다. 그렇다면 개정판 ID로 owner_id를 설정해야합니다.

def new 
    # precaution against creating multiple empty revisions if user adds multiple comments without refreshing page 
    if params[:owner_id].nil? 
    revision = @section.send(params[:snip_type]).first 
    unless revision.nil? 
     @comment.owner_id = revision.id 
    end 
    end 
end