ProgramingTip

link_to : 확인 팝업이 두 번 표시됨

bestdevel 2020. 12. 26. 15:57
반응형

link_to : 확인 팝업이 두 번 표시됨


레일 3이있는이 태그

<%= link_to 'Destroy', item, :method => :delete,:confirm=>'Are you sure?' %>

이 HTML을 생성

<a href="/news/3" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a>

항목이 삭제되고 팝업이 두 번 클릭 문제가 있습니다.

원인은 무엇입니까?


rails.js의 확인 확인 Javascript가 두 번 첨부되는 것입니다.

실수로 javascriptinclude_tag 도우미의 복제를 통해 rails.js의 두 복사본을 포함 할 수 있습니까?


나는 똑같은 문제를 여러 시간 동안 더 많은 시간을 보이죠. 내 상황에서 해결을 찾았고 도움이 될 경우 공유 할 생각했습니다.

내 문제는

config.assets.debug = true 

설정 / 환경 / development.rb

해당 라인을

config.assets.debug = false

나를 위해 확인했습니다. 자산 파이프 라인대한 레일스 가이드 에서 관련 정보를 찾았 습니다 . 도움이 되셨기를 바랍니다.


나는 javascriptinclude_taghaml-layout-file의 맨 아래에 를 포함하는 데 사용되었습니다 .

Rails4 및 Turbolinks를 사용하면 다음과 같은 일이 발생합니다.

  • 페이지를 처음로드 할 때 모든 것이 정상입니다 (확인 팝업은 한 번만 나타남).
  • 다른 페이지 방문-> 팝업이 두 번 발생
  • 한 페이지 더 방문-> 팝업이 세 번 발생
  • 기타
  • 페이지를 새로 고침 할 때까지

javascriptinclude_tag아래에서 아래로 이동하여 문제를 해결했습니다.<head>


저는 Rails 4를 사용하고 어떤 답변도 저에게 효과가 없었지만 다음은 효과가 효과가 ... 라인을 변경했습니다.

<%= javascriptinclude_tag 'application', 'data-turbolinks-track' => true %> 

...에

<%= javascriptinclude_tag 'application', 'data-turbolinks-eval' => false %>.

https://github.com/rails/turbolinks/issues/244


여기에 훌륭한 답변,

모든 작업을 그러나 수행했지만 여전히 이중 팝업이-display되고 개발-mode 에서 실행중인 경우 public/assets컴파일 된 자산 로드 했는지 확인하십시오 .

삭제 public/assets/*하면 문제가 해결됩니다.


이것은 Rails의 버그 인 것입니다. 분명히 application.js의 지시문은 디버그 모드가 활성화 식별 파일로 확장 될뿐만 아니라 application.js에도 적용됩니다. 나는 이것을 위해 Rails 코드를 보지 않는 application.js가 기본 자바 스크립트 파일이기 때문에 가정합니다. 이의 바꾸면 default.js는 디버그 모드에서 지시문에 지정된 파일을 포함하고 default.js는 해당 파일에만있는 JavaScript 만 출력합니다. 따라서 두 번째 코드를 생성하지 않습니다.

예 :

application.js

// = jquery_ujs 필요

foo ();

결과 :

1) jquery_ujs.js

2) jquery_ujs 내용과 foo ()가있는 application.js


default.js

// = jquery_ujs 필요

foo ();

결과 :

1) jquery_ujs.js

2) foo ()를 사용하는 default.js


Rails 3.2.12에서 동일한 문제가 있었지만 3.2.13으로 업데이트하면 문제가 해결되었습니다.


(rails 5)이 솔루션을 다른 게시물에서 복사했습니다.

"rails_ujs는 최신 rails 버전에 충실한 application.js에서 jquery_ujs를 제거하십시오."

나는 포함했다 : //= require jquery //= require jquery-ujs //= require rails-ujs

삭제 후 모두 작동합니다. 해결 방법 : Rails에서 JQuery 경고가 두 번 표시되는 이유는 무엇입니까?


제 경우 (3.2.13 레일)에서는 동일한 문제를 해결하기 위해 rails.js삭제해야 우리 했습니다.

rails.js를 명시 적으로 참조하지 갑자기 고 config.assets.debug 도움말을 변경하지 않습니다.


제 경우에는 jQuery가 라인 때문에 두 번로드되었습니다. //= require_tree .

application.js 에서이 오류를 방지하고 내가 하위 디렉토리를 생성하는 데 사용 해요 application.css app/assets/javascript/autorequire대신의 내가 require_tree .require_tree ./autorequire.

그래서,에있는 파일 app/assets/javascriptapp/assets/stylesheets실수로 더 이상 / 자동으로 포함되지 않습니다. 모든 개별 .css 및 .js 파일을 하위 디렉터리에 넣고 암시 적으로 포함합니다. 그러나 최상위 경로의 파일을 어떤 순서로 포함할지 정의 할 수 있습니다.

그렇게했기 때문에 예상대로로드되지 않은 자산으로 인해 문제가 발생하지 않았습니다.


그래서 나에게는 원격이 아닌 데이터 원격을 정의했기 때문입니다.

IE

데이터 : {원격 : 참, ...}

대신에

원격 : true, 데이터 : {...}

도움이 되길 바랍니다.


제 경우에는 응용 프로그램에 "mootools ujs"와 "jquery ujs"가 모두 포함되어있었습니다. 나는 mootools 하나를 제거했고 지금은 하나의 확인 만 봅니다.


rails4에서 나를 위해 일했던 터보 링크를 제거하십시오.


둘 중 하나를 실행하십시오

rake assets:precompile ENV=development 

또는

rake assets:precompile ENV=production

지우다:

//= require jquery
//= require jquery_ujs
//= require_tree .

에서 app/assets/javascripts/application.js. 주석 처리 되었음에도 불구하고 이러한 js 파일을로드합니다. 그것은 나를 위해 작동합니다.

참조 URL : https://stackoverflow.com/questions/4475449/link-to-confirm-displays-popup-twice

반응형