2011-07-28 5 views
1

사용자가 링크를 통해 "같은 수"를 늘릴 수있는 간단한 아약스 기능을 만듭니다.레일즈 3 아약스 응답이 실행되지 않습니다.

내 컨트롤러 코드를 실행하는 링크를 얻을 수 있었지만 브라우저가 응답을 다시 받고 있지만 응답은 실행되지 않습니다.

.likes      
    .like_up                 
    = link_to(image_tag('/images/thumb_up.png'), '/like/' + question.id.to_s, :remote => true) 
    #like_count 
    = 22# question.likecount             
    .like_down 
    = link_to(image_tag('/images/thumb_down.png'), '/dislike/' + question.id.to_s, :remote => true) 

그리고 likes_controller로 전환 :

등 연결 부분에

alert('2'); 
:

def up 
    @like = current_user.likes.create(:question_id => params[:question_id], :like => true) 
    respond_to do |format| 
    format.js 
    end 
end 

그런 다음 내 up.js.haml에서 단순히 디버그 자바 스크립트를

등은 없습니다. 내가 브라우저에서 같은 링크를 누르면

레일 그것이 js.haml

... 
Rendered likes/up.js.haml within layouts/application (104.9ms) 
Completed 200 OK in 923ms (Views: 116.3ms | ActiveRecord: 20.1ms) 

렌더링했다고 나 다세대 로그 내가 브라우저가 확실히를 가져 응답을 볼 때이 up.js처럼 보인다 .haml은 yield 태그가있는 응용 프로그램 레이아웃으로 렌더링됩니다.

<div class='content'> 
    alert('2'); 
    </div> 

나는 이것이 브라우저가 원하는 것을 원하지 않는다. 또한 ajax 요청 중에 firebug 콘솔을 볼 때 요청이 전송 된 후에는 아무 일도 일어나지 않습니다.

왜 이것이 작동하지 않는지 알 수 있습니까? 내가 찾은 모든 자습서와 안내서는 내가 여기서하는 것과 같은 방식으로 수행됩니다.

답변

2

첫째, 콘텐츠 형식이 정확한지 확인하십시오

curl --head -X POST http://localhost:8080/.... 

내가 Content-Typetext/javascript

두 번째를해야한다 생각 나는 DIV하지 않는 있도록 레이아웃을 사용하지 않을 생각 출력에 나타납니다.

def up 
    @like = current_user.likes.create(:question_id => params[:question_id], :like => true) 
    respond_to do |format| 
    format.js { render :partial => 'up', :layout => false } 
    end 
end 

아니면 그것은 간단한 원격 형태로 나에게 무슨 일이 있었

layout false 
+1

감사합니다 :) 레이아웃을 사용하지 않도록 설정하면이 문제가 해결됩니다. 컬은 Ajax가 작동하기 시작한 후에도 Content-Type이 text/html이라고 말했습니다. – Mika

+0

어쩌면 당신은 렌더링을 할 수 있습니다 : js => 'up'또는 render : partial => 'up', : format => 'json' –

+0

왜 그게 효과가 있을지 아는 사람? –

0

으로 전체 컨트롤러를 비활성화합니다.

서버를 다시 시작한 후에도 개발 환경에서 작업했습니다.

희망 나는 낭비하는 시간을 누군가 구할 수 있기를 바랍니다.

감사합니다.

관련 문제