2013-02-14 2 views
0

저는 특정 컨트롤러의 액션에만 해당하는 ajax 호출을 처리했습니다.간단한 ajax 호출하기

나는 보통 컨트롤러에서 작업을 할 것이다

내가 할 것, 그리고 아약스 전화를 걸 (의 행동 '처럼'을 부르 자) :

보기에서

, <%= link_to 'like', like_path, :remote => true %> 및 부분 JS에를 파일 등 $('.some_class').html("<%= j render 'some_partial' %>");

그러면 아약스 호출이 방해받지 않습니다.

이번에는 더 간단한 아약스 호출이 필요합니다. 링크를 클릭하면 div를 다른 div로 바꾸고 싶습니다. 그러나 링크를 클릭하기 전에 함수가 실행됩니다.

$(function teacher_function(){ 
    $(.become_teacher).html("<%= j render 'become_teacher' %>"); 
}); 

<div class="become_teacher"> 
    change this div 
</div> 

<%= link_to_function "ajax call", "teacher_function()" %> 

및 _become_teacher.html.erb에서

, 내가 some message이보기에서

는 become_teacher 클래스 DIV에 넣어합니다.

이것은 매우 간단한 javascript 문제인 것처럼 보이지만 모든 레일스 문서는 항상 컨트롤러의 특정 작업에 해당하는 ajax 호출을하기 때문에 레일스 응용 프로그램에서이 작업을 수행하는 가장 일반적인 방법을 알고 싶었습니다.

답변

1

내가 먼저 sensical, 법적 구문을 시작 했죠 : 여기에는 아약스가 없다

function teacher_function() { 
    $(".become_teacher").html("<%= j render 'become_teacher' %>"); 
} 

<div class="become_teacher"> 
    change this div 
</div> 

<%= link_to_function "ajax call", "teacher_function()" %> 

하지만.

+0

고마워요! 그래서 문제는 필자가 기능에 달러 표시를했다는 것입니다. 하지만 왜 이것이 아약스가 아닌지 설명해 주시겠습니까? 전체 페이지를 다시로드하는 대신 나머지 페이지에 영향을주지 않고 전체 페이지의 div 부분 만 효과적으로 다시로드합니다. 아약스의 약자가 아닐까요? –

+1

@ Maximus 요청에 대한 비동기가 없기 때문에 JavaScript 함수와 DOM 조작 만 가능합니다. 다시로드 할 필요가 없습니다. 당신이 말했기 때문에 함수가 즉시 실행되었습니다. $에 대한 인수로서의 함수는 "DOM이 준비되었을 때 이것을 실행"을 의미합니다. –

관련 문제