2014-11-02 2 views
0

가 나는 레일에 다음과 같은 자바 스크립트 코드가 나는 페이지를 입력하지만, 새로 고침 후에 만 ​​할 때 트리거되지 않습니다의 .js는

// app/assets/javascript/simple_effects.js 

$(function() { 
    // Hide completed tasks when checkbox is clicked. projects/show 
    $('#hide-completed').click(function() { 
    $('.task-completed').toggle(); 
    }); 
    // Change label to checkbox that hides completed tasks. project/show 
    $('#hide-completed').change(function(){ 
    var c = this.checked ? ' Show completed tasks' : ' Hide completed tasks'; 
    $('#checkbox-label').text(c); 
    }); 

}); 

코드를 투영 한 레일에서 페이지를 새로 고침 이후에만 하중을 파일. 터보 링크를 사용하고 있습니다.

이 질문에 대해 알고 계십니다. Rails loading my javascript only after a page reload 하지만이 솔루션을 제 경우에도 사용할 수 있는지 여부는 잘 모르겠습니다. 감사합니다.

편집 : 이 당신이 jQuery.ready()에 요소를 결합 자바 스크립트를 기존의 많은 경우 내 application.js가

//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require bootstrap-sprockets 
//= require_tree . 
+0

에이됩니까? – mohameddiaa27

답변

5

파일입니다, 당신은 당신의 프로젝트에 jquery.turbolinks 라이브러리를 당길 수있는 것 Turbolinks가 페이지 :로드 이벤트를 트리거 할 때 ready()를 트리거합니다. 일부 라이브러리의 기능을 복원 할 수 있습니다.

jquery.js 이후하지만 turbolinks.js 전에

gem 'jquery-turbolinks' 

다음 자바 스크립트 매니페스트 파일에 다음 행을 추가, 프로젝트에 보석을 추가

//= require jquery.turbolinks 

당신의 application.js

//= require jquery 
//= require jquery_ujs 
//= require jquery.turbolinks 
//= require turbolinks 
//= require bootstrap-sprockets 
//= require_tree . 
+0

응용 프로그램에서 오류가 발생합니다 : 'jquery.turbolinks'파일을 찾을 수 없습니다 –

+0

이 보석을 추가 한 후에 레일 서버를 다시 시작해야합니다. 그렇지 않으면 La Murga에게 오류가 발생합니다. –

+0

github 페이지 (https://github.com/kossnocorp/jquery.turbolinks)에 명시된 바와 같이 ** 터보 링크 5 이상에서는 ** 작동하지 않습니다. – LPrc

0

터보 링크 5 이상을 사용하는 경우 jquery-turbolinks이 작동하지 않습니다. ymore (https://github.com/kossnocorp/jquery.turbolinks 참조).

코드 대신 $(document).on "turbolinks:load", -> 코드를 사용할 수 있습니다.

예.

$ -> 
    $("#add-artwork-btn").on 'click', -> 
    div = $("#add-artwork-div") 
    div.toggle(200) 

당신이 당신의`application.js` 파일을 게시 할 수 있습니다

$(document).on "turbolinks:load", -> 
    $ -> 
    $("#add-artwork-btn").on 'click', -> 
     div = $("#add-artwork-div") 
     div.toggle(200)