2012-11-02 4 views
4

Rails 3.2.8에서 jQuery에 문제가 있습니다. 나는 JQuery와 레일 보석을 설치 한 내 application.js은 다음과 같습니다jQuery가 Rails 3.2.8에서 작동하지 않습니다.

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

뷰/레이아웃/application.html.erb

<%= javascript_include_tag "application" %> 

test.js에서 간단한 자바 스크립트 테스트가 있습니다 :

if (jQuery) { 
alert('Jquery is loaded') 
} else { 
alert ('Jquery is not loaded') 
} 

은 jQuery가 실제로로드되었다는 알림을 표시합니다.

는 그러나, jQuery를 명령도 기본적인 것들 응답하고, 작동하지 않습니다 :

$(document).ready(function(){ 
$("a").click(function(event){ 
alert("Thanks for visiting!"); 
}); 
}); 

내가 해봤 다 - 심지어 구글의 API를 통해 jQuery를 다시 포함. 무슨 일이 벌어 질지에 대한 아이디어가 있습니까?

+1

콘솔에 js 오류가 있습니까? – apneadiving

+0

콘솔에 오류가 표시 되었습니까? –

+0

아니요 콘솔에 js 오류가 없습니다. – Michelle

답변

2

그것을 고정!

<%= stylesheet_link_tag "application", :media => "all" %> 
<%= javascript_include_tag "application" %> 

에 : application.html.erb에서

, 나는에서이 두 줄의 순서를 변경

<%= javascript_include_tag "application" %> 
<%= stylesheet_link_tag "application", :media => "all" %> 

지금 작동! 아무튼 왜 설명 할 수 있을지 모르겠다.

+5

동일한 문제가 있습니다. 그러나 나는 이것들을 바꾸려고 노력했다. –

1

테스트중인 브라우저에서 콘솔을 확인하고 싶을 것입니다. jQuery의 경우

는, $는 jQuery를위한 단지 별칭, 별칭을 제거 곳) 다음 작업 아마 당신은 jQuery.noConflict (라고 한

jQuery(document).ready(function(){ 
    jQuery("a").click(function(event){ 
    alert("Thanks for visiting!"); 
    }); 
}); 

합니까?

http://api.jquery.com/jQuery.noConflict/

1

당신은 자바 스크립트를 포함하고 있는지 확인은 application.html.erb에서 yield 전에 태그를 포함한다. 부트 스트랩을 사용하고 있다면, 기본값 인 application.rb이 JS를 yield 후에로드한다고 생각합니다. 따라서 뷰에서 실행하기 전에 jQuery가로드 될 때까지 기다릴 필요가 있습니다. 그런 경우 당신은 높은 페이지에 태그를 포함 재배치하지 않으려면

, 당신은이 작업을 수행 할 수 있습니다

runScript(); 
function runScript() { 
    if(window.$) { // Make sure jquery is loaded 
     // your jquery code here 
    } else { 
     window.setTimeout(runScript, 100); // If not, wait 100 milliseconds and try again. 
    } 
} 
0

대답하기에는 너무 늦었지만 여전히 동일한 문제가 있었고 2 시간 쯤 걸렸습니다. js 파일에있는 주석은 루비 주석이며 js 주석이 아니므로 제거하십시오. 그것을 제거하고 js 코드를 작성하면 잘 작동합니다.

관련 문제