2011-12-23 3 views
0

내가 views/public/home.js.erb에서 다음 views/public/home.html.erbJQuery와/자바 스크립트는 3

<div id="block">click</div> 

에서이 HTML을 가지고 있다면, 당신은 예를 들어 레일 3에서 뷰 템플릿에서 자바 스크립트를 넣을 수있는 인상이었다, 나는 생각했다 다음 javascript를 넣은 다음 html을 클릭하여 자바 스크립트를 트리거 할 수 있습니다. 그러나, 내가 그것을 테스트했을 때, 나는 아무 결과도 얻지 않았다. 하지만 자바 스크립트를 assets/javascript/application.js에 넣으면 모든 것이 잘 작동합니다 ... html보기와 같은 이름을 가진 js 템플릿에 있었다면 작동하지 않아야합니까?

$(document).ready(function(){  

test(); 
}); 


function test() { 

    $("#block").click(function() { 

     $('#block').hide(); 

     }); 

} 

답변

1

자바 스크립트가 뷰 파일 (bla.js.erb)으로 추가되지 않아야한다. 그들은 asset/javascripts 또는 적어도 lib 디렉토리 나 vendor 디렉토리에 있어야합니다.

이미 require_tree를 사용하지 않는 경우 application.js 파일에도이 파일이 필요합니다.

이렇게하면보기에서 어떤 방식 으로든 javascript를 참조 할 필요가 없습니다 (application.js가 포함됩니다). 그렇지 않으면 레이아웃을 지정해야합니다. 뷰가 태그 다음에 렌더링되기 때문에 블록에 javascript 파일을 삽입해야합니다.

javascript를 html로 직접 입력하지 않는 이유는 많이 있습니다 (테스트는 제외). 자세한 내용은 rails asset pipeline을 읽어보십시오.

URL이 해당 확장자가있는 형식을 지정하는 경우에만 사용되는 html.erb과 다른 확장명으로보기를 만들 때, 예를 들어 mywebsite/users.json은 결국 index.json.erb를 반환합니다.

당신이 JSON 개체, 확실히 올바른 접근하지하지 자바 스크립트를 반환하고 싶은 AJAX를 들어

. 프레임 워크를 사용하고 있으며 지침을 따라야한다는 것을 기억하십시오. 살고 싶다면 레일, 그것으로 작업하기 어려울 것입니다.

+0

O.K를 사용하여 포함 할 수 있습니다. 사실, 방금 읽은 책을 확인했고 public/views/tags에서 remove.js.erb라는 파일을 가지고 있으며 Tags 컨트롤러에 "remove"라는 기능이 있습니다. 그들은 분명히 페이지를 새로 고치지 않고도 아약스가 프레젠테이션을 바꿀 수 있습니다. – Leahcim

+0

공개 /보기/태그가 다른데보기가 아니라 항상 물건을 넣을 수있는 장소입니다. 뷰인 javascript 파일을 ajax로 실제로 호출하려면보기가 myview.js.erb 인 경우 링크에 .js를 추가해야한다는 것을 기억하십시오. 예 : mywebsite/users.js –

+0

o.k. 설명해 주셔서 감사합니다. 당신이 줄 수있는 어떤 도움이라도 매우 감사합니다. 건배. – Leahcim

2

음. 아니. 그렇게 작동하지 않습니다. 응답 유형에 따라 views/public/home. * 중 하나만 렌더링됩니다. 당신은 JS 파일 source1.js이있는 경우

+0

동시에 Ajax가 페이지를 새로 고치지 않고도 작동하도록하려면 javascript가 뷰에 있어야하지 않습니까? – Leahcim

+0

o.k., thanks then – Leahcim

+0

javascript가 자산을 통해 포함되거나 렌더 된 뷰의