원격으로 실행 된 작업과 링크를 처음 클릭 할 때 업데이트되지 않는 부분에 문제가 있습니다. 뷰 내부부분 클릭이 첫 번째 클릭에서 업데이트되지 않았습니다.
(부분 books
이름) 나는 링크를 만드는 오전 : 또한 책을 읽을 때 다른 텍스트를 표시하는 조건이 routes.rb에 정의되어
link_to "⊗", read_book_path(book), :remote => true
read_book_path
을 .
, 나는 새로운 액션 정의 : 이것은 파일 read.js.erb
필요 의미
def read
@books = Book.all
@book = Book.find(params[:id])
@book.read = [email protected]
@book.save
respond_to do |format|
format.html { redirect_to(books_url) }
format.js {render :layout => false, :locals => { :book => @book } }
end
end
,이 파일의 내용은 다음과 같습니다 제가 링크를 클릭하면
$("#books").empty().html("<%= escape_javascript(render(:partial => "books")) %>");
, 내가 할 수있는 터미널 창에서 데이터베이스 필드가 업데이트되었지만 부분은 업데이트되지 않았는지 확인하십시오. 동일한 링크를 다시 클릭하면 부분이 업데이트됩니다.
링크를 :remote => false
으로 변경하더라도 작동하지만 페이지가 (예상대로) 다시로드됩니다.
Safari 및 개발자 도구를 사용하여 디버깅을 시도했으며 링크를 처음 클릭 할 때 서버의 응답을 볼 수 있습니다. 뭔가 잘못되었으므로 <%= escape_javascript(render(:partial => "books")) %>
에 의해 생성 된 HTML에 부분 HTML의 이전 콘텐츠가 포함 된 잘못된 HTML이 포함되어 있습니다. 두 번째 또는 세 번째 클릭 만 업데이트 된 HTML을 표시합니다.
jquery-ujs가 통합되었습니다. 부분 업데이트가 처음으로 업데이트되지 않거나 다른 것이 누락 된 이유는 무엇입니까?
이것은 정말로 두통을 줬습니다. 저를 도와 줄 수 있습니까?
편집 : 도움이되는 경우 : application.js의 수신기를 ajax:before
및 ajax:complete
으로 생성했습니다. 첫 번째는 약간의 회 전자를 보여주고 두 번째는 숨 깁니다. 링크를 클릭하면 회 전자가 표시되지만 숨기지는 않습니다.
답장을 보내 주셔서 감사합니다. 주문을 변경하면 내 문제가 해결되었습니다. :) 내가하려는 일은 '읽기'책을 클릭하면 '읽지 않음'으로 표시되고 그 반대의 경우에도 스위치로 표시됩니다. 따라서 현재 값을 읽고 반전하고 다시 저장합니다. 나는 더 나은 방법을 찾을 수 없었다. – dmnkhhn