2011-10-11 2 views
13

사용자 및 고객을 입력하기위한 100 % Ajax CRUD 양식으로 구성된 Rails 3.1 애플리케이션을 개발했습니다. 두 개의 별도 모델, 컨트롤러, 뷰 등을 만들었습니다. 각 모델의 뷰에는 업데이트 편집 및 삭제를위한 jquery 파일이 포함되어 있습니다. 문제는 원격 작업을 수행하는 작업을 수행 할 때 두 번 호출된다는 것입니다. 필자는 WEBrick 출력의 콘솔 출력뿐만 아니라 콘솔 뷰에서도 이런 일이 발생했는지 확인할 수 있습니다. 아무도 여기에서 일어난 일을 추적 할 수 있습니까? 레일스가 각 호출을 두 번 처리하는 원인은 무엇입니까?Rails 3.1 원격 요청 두 번 제출

+0

일부 코드는 원근법을 더 잘 이해하는 데 도움이됩니다. 예 : 두 번 호출되는 코드 게시 – Rafay

+0

이것은 직감입니다 - 자바 스크립트 코드 또는 ['jquery-rails'] (https://github.com/rails/jquery-rails)가 페이지에 두 번 포함되어 있습니까? 사전 컴파일을 완료 한 경우 public/assets 폴더를 확인하십시오. – Anurag

+0

@Anurag 그것이 내가 생각하는 것입니다. 시작하기 전에 "bundles exec rake assets : precompile"을 실행했습니다. 해당 파일을 제거해야합니까? – ctilley79

답변

13

애셋을 미리 컴파일하고 개발 모드에서 실행중인 경우 JavaScript가 페이지에 두 번 포함됩니다.

개발 모드 인 경우 public/assets에서 모든 항목을 제거하십시오.

+0

나는 (공공/자산 경로를 전혀 삭제하고 내 서버를 다시 시작하는) 솔루션을 따라했지만 여전히 질문에서 설명한 문제가 발생했습니다. 나는 무언가를하는 것을 잊고 있습니까? – user12882

+2

캐싱 문제입니다. 브라우저 캐시를 재설정하십시오. 알아 내기 전에 저에게 일어났습니다 – ctilley79

+2

레이크 명령이 있다는 것을 알고 계셨습니까? 레이크 자산 : 터미널에서 정리하십시오. ;) – Kulgar

19

config.serve_static_assets = false에서 development.rb을 추가하면 /public/assets에서 파일을로드 할 수 없습니다.

실제로 테스트 모드가 /public/assets의 고정 자산 만 사용하므로 실제 프로덕션 자산 문제가 발생하기 때문에 로컬로 사전 컴파일해야합니다. 방법? config.assets.compile = falseconfig.serve_static_assets = truetest.rb 구성으로 설정하면됩니다.

+1

레일즈 4부터 'config.serve_static_assets'는 더 이상 사용되지 않습니다. 대신에'config.serve_static_files'를 사용하십시오. – Jin