페이지 새로 고침시에만 Coffeescript 실행-Rails 4

무사

마켓 플레이스 앱을 개발 중입니다. 판매자가 리스팅을 생성 할 때 지불 이체를 위해 은행 계좌 정보를 입력합니다. 판매자가 리스팅을 제출하면 coffeescript는 Stripe에서 토큰을받습니다. 앱의 첫 번째 버전을 개발할 때이 기능을 사용했습니다. 그런 다음 더 많은 기능을 추가했는데 어떤 이유로 이제 여기에 무슨 일이 발생하는지 ...

  • 판매자가 리스팅 양식을 제출합니다. 커피 스크립트가 실행되지 않습니다. 뒤로 버튼을 누르고 양식을 다시 제출합니다. coffeescript가 실행됩니다.

다음은 처음 제출하는 동안의 내 로그입니다. 마지막 행을 참조하십시오.

Parameters: {"utf8"=>"√", "authenticity_token"=>"S4hE7Ku7XsOII6cxTWa+Hoc7+O7bk
Whgk/zo3CODyBw=", "listing"=>{"name"=>"test johntemp", "description"=>"ssfdfsd",
"price"=>"22", "category"=>"Necklaces", "inventory"=>"3", "image"=>#<ActionDisp
atch::Http::UploadedFile:0x3fb15a0 @tempfile=#<Tempfile:C:/Users/amoosa/AppData/
Local/Temp/RackMultipart20140809-3840-4pno42>, @original_filename="gold-chain-br
acelet.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-dat
a; name=\"listing[image]\"; filename=\"gold-chain-bracelet.jpg\"\r\nContent-Type
: image/jpeg\r\n">}, "commit"=>"Create Listing"}

뒤로 버튼을 누른 후 다시 제출하십시오. 아래에 생성되었지만 위가 아닌 은행 토큰에 유의하십시오. 여기에서 마지막 행을 참조하십시오.

 Parameters: {"utf8"=>"√", "authenticity_token"=>"WI5hCZpxIvpZ+Jq3ifwU+vVYKNoUd
 0RRCWTrYKmMKAA=", "listing"=>{"name"=>"test lister item", "description"=>"sdsf",
 "price"=>"22", "category"=>"Necklaces", "inventory"=>"4", "image"=>#<ActionDisp
 atch::Http::UploadedFile:0x3fdc7b8 @tempfile=#<Tempfile:C:/Users/amoosa/AppData/
 Local/Temp/RackMultipart20140809-3840-qetwl0>, @original_filename="mosaic-enamel
 -bracelet.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-
 data; name=\"listing[image]\"; filename=\"mosaic-enamel-bracelet.jpg\"\r\nConten
 t-Type: image/jpeg\r\n">}, "stripeToken"=>"btok_4YcZ4SdyNHG0Y0"}

내 application.js 파일은 다음과 같습니다. 나는 이것을 테스트하기 위해 다른 모든 js를 제거했습니다.

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .
//= require bootstrap

무슨 일이 일어날 수 있는지에 대한 생각이 있습니까?

리처드 펙

터보 링크

문제가있는 것 같습니다. Turbolinks

Turbolinks는 기본적으로 새 페이지 <body>태그를 로드 하고 <head>태그는 그대로 둡니다 . 이것의 문제는 <body>( DOM 이 새로 고쳐 졌기 때문에) Javascript가 새 요소에 바인딩 할 수 없다는 것입니다.

여기서 결론은 JS가 <body>Turbolinks에 의해로드 된 새로운 요소에 바인딩되지 않는 것처럼 들린다는 것 입니다. 이 문제를 해결하려면 jquery.turbolinksgem을 사용 하거나turbolinks event hooks

두 가지 모두 자세히 설명하겠습니다.


jquery.turbolinks

다음은 가장 간단한 해결 방법입니다.

#Gemfile
gem 'jquery-turbolinks', '~> 2.0.2'

이것은 Turbolinks page:load이벤트 콜백 내에서 JS 호출을 래핑하여 기본적으로 JS가 turbolinks친숙 해질 수 있도록합니다 . 이 보석의 장점은 작동하기 위해 아무것도 할 필요가 없다는 것입니다.

#app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require jquery.turbolinks
//= require_tree .
//= require bootstrap
//= require turbolinks

-

이벤트 후크

바로 이 문제를 해결하는 방법은 귀하의 이벤트를 결합하는 Turbolinks이벤트 후크; JS가 항상 페이지에있는 요소에서 올바르게 위임 할 수 있도록합니다.

#app/assets/javascripts/application.js.coffee
your_function = ->
  $(your).functionality(here)

$(document).on("page:load ready", your_function)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

On Scroll은 페이지 새로 고침시 자동으로 실행됩니다.

분류에서Dev

페이지의 Angular 4 새로 고침 섹션 만

분류에서Dev

gmaps4rails-페이지를 새로 고침하지 않고지도의 데이터베이스에서 마커를 동적으로 업데이트

분류에서Dev

jQuery는 첫 페이지 방문시 자발적으로로드되지만 Rails 앱에서 새로 고침시에는로드되지 않습니다.

분류에서Dev

페이지 새로 고침시 각도, 데이터 손실

분류에서Dev

PHP-페이지 새로 고침 및 테이블에 다른 행 표시

분류에서Dev

자바 스크립트는 페이지 새로 고침시에만 실행됩니다.-Squarespace 사이트, 터보 링크가 필요 없음

분류에서Dev

페이지 새로 고침 후 다른 브라우저에서 SignalR 허브 OnDisconnected 실행 시간

분류에서Dev

rails 4에서 페이지를 새로 고치지 않고 form_tag에 데이터를로드합니다.

분류에서Dev

페이지 새로 고침없이 gridview에서 행 곱하기

분류에서Dev

페이지로드 후 기능을 실행하지만 새로 고침하지 않음

분류에서Dev

Flutter : 다음 페이지에서 돌아온 후 페이지를 새로 고침하여 기능 실행

분류에서Dev

Rails 5의 form_with에서 페이지 새로 고침시 체크 박스 값 유지

분류에서Dev

Ruby on Rails-페이지 새로 고침 중에 클래스를 다시 초기화 하시겠습니까?

분류에서Dev

페이지 새로 고침시 내 자바 스크립트 기능이 실행되지 않습니다.

분류에서Dev

각 페이지 새로 고침에 대한 새 행 삽입 방지

분류에서Dev

Rails 4-로컬 머신에서 스테이징 실행

분류에서Dev

페이지를 새로 고친 후에 만 실행되는 jQuery 함수

분류에서Dev

IE9에서 페이지를 실행하려면 F12 + 새로 고침이 필요합니다.

분류에서Dev

setTimeout 및 해시 태그 손실없이 페이지 / 탭 새로 고침

분류에서Dev

WordPress : 페이지에 빈 행이 추가됨 (로드 / 새로 고침)

분류에서Dev

PHP / MYSQL : 새로 고침 후에도 제거 된 행이 내 페이지에 계속 표시됩니다.

분류에서Dev

콘텐츠 업데이트시에만 웹 페이지 자동 새로 고침

분류에서Dev

Rails 4에서 이상하게 작동하는 CoffeeScript

분류에서Dev

함수는 페이지를 새로 고침 할 때만 실행되며 처음로드 할 때는 실행되지 않습니다.

분류에서Dev

페이지 새로 고침 후에 만 표시되는 Morris 차트

분류에서Dev

scrollTop ()은 페이지 새로 고침 후에 만 결과를 표시합니다.

분류에서Dev

AngularJS 페이지 새로 고침에서만 숨기기 요소 표시

분류에서Dev

Rails 4 Long Coffeescript 컴파일 시간

Related 관련 기사

  1. 1

    On Scroll은 페이지 새로 고침시 자동으로 실행됩니다.

  2. 2

    페이지의 Angular 4 새로 고침 섹션 만

  3. 3

    gmaps4rails-페이지를 새로 고침하지 않고지도의 데이터베이스에서 마커를 동적으로 업데이트

  4. 4

    jQuery는 첫 페이지 방문시 자발적으로로드되지만 Rails 앱에서 새로 고침시에는로드되지 않습니다.

  5. 5

    페이지 새로 고침시 각도, 데이터 손실

  6. 6

    PHP-페이지 새로 고침 및 테이블에 다른 행 표시

  7. 7

    자바 스크립트는 페이지 새로 고침시에만 실행됩니다.-Squarespace 사이트, 터보 링크가 필요 없음

  8. 8

    페이지 새로 고침 후 다른 브라우저에서 SignalR 허브 OnDisconnected 실행 시간

  9. 9

    rails 4에서 페이지를 새로 고치지 않고 form_tag에 데이터를로드합니다.

  10. 10

    페이지 새로 고침없이 gridview에서 행 곱하기

  11. 11

    페이지로드 후 기능을 실행하지만 새로 고침하지 않음

  12. 12

    Flutter : 다음 페이지에서 돌아온 후 페이지를 새로 고침하여 기능 실행

  13. 13

    Rails 5의 form_with에서 페이지 새로 고침시 체크 박스 값 유지

  14. 14

    Ruby on Rails-페이지 새로 고침 중에 클래스를 다시 초기화 하시겠습니까?

  15. 15

    페이지 새로 고침시 내 자바 스크립트 기능이 실행되지 않습니다.

  16. 16

    각 페이지 새로 고침에 대한 새 행 삽입 방지

  17. 17

    Rails 4-로컬 머신에서 스테이징 실행

  18. 18

    페이지를 새로 고친 후에 만 실행되는 jQuery 함수

  19. 19

    IE9에서 페이지를 실행하려면 F12 + 새로 고침이 필요합니다.

  20. 20

    setTimeout 및 해시 태그 손실없이 페이지 / 탭 새로 고침

  21. 21

    WordPress : 페이지에 빈 행이 추가됨 (로드 / 새로 고침)

  22. 22

    PHP / MYSQL : 새로 고침 후에도 제거 된 행이 내 페이지에 계속 표시됩니다.

  23. 23

    콘텐츠 업데이트시에만 웹 페이지 자동 새로 고침

  24. 24

    Rails 4에서 이상하게 작동하는 CoffeeScript

  25. 25

    함수는 페이지를 새로 고침 할 때만 실행되며 처음로드 할 때는 실행되지 않습니다.

  26. 26

    페이지 새로 고침 후에 만 표시되는 Morris 차트

  27. 27

    scrollTop ()은 페이지 새로 고침 후에 만 결과를 표시합니다.

  28. 28

    AngularJS 페이지 새로 고침에서만 숨기기 요소 표시

  29. 29

    Rails 4 Long Coffeescript 컴파일 시간

뜨겁다태그

보관