2012-12-10 2 views
0

레일 어플리케이션의 ajax에 "like"버튼을 구현했습니다. 왜 경고가 작동하지 않는지 궁금합니다.레일 3 Ajax와 작동하지 않는 경고

$("#post_like_<%= @post.id %>").html("<%= @post.num_likes %>"); 

내 컨트롤러에서

,

def like 
    @post = Post.find(params[:id]) 
    if current_user 
     if @like.empty? 
      @post.num_likes += 1 
      @post.save 
     else 
      alert = "You already liked the post :)" 
     end 
    end 
    end 

내 like.js.erb 파일 나는 처음에 그가 로그인되어 있지 않은 경우 페이지에서 로그로 사용자를 리디렉션 싶었지만 XML 요청에서 리디렉션을 사용하는 것은 불가능하다는 것을 알게되었습니다. 사용자가 "좋아요"버튼을 클릭 할 때 동시에 경고 메시지를 표시하면서 로그인하도록 요청할 수있는 임시 해결 방법이 있습니까?

내 컨트롤러에 "경고"를 사용하는 것에 대한 해결 방법이 될 수 있으므로 부트 스트랩을 포함하여 내 js 파일에 popover을 넣을 것을 고려했지만 작동하지 않았습니다. 나는 좋아하는 수의 아래에서 popover를 볼 것으로 예상했다.

$("#post_like_<%= @post.id %>").html("<%= @post.num_likes %>"); 
$("#post_like_<%= @post.id %>").popover('show') 

아무도 내 질문에 대한 답변을 제공 할 수 있습니까? 도움을 주셔서 감사합니다.

:

답변

1

는 Ajax 요청에 의해 트리거 플래시 메시지를 표시하려면 (이 아이디 페이지에 "플래시"와 분열의 존재를 가정) 당신의 like.js.erb 파일 같은 것을 할 수 있습니다
<% if @alert %> 
    // displays the alert message and makes it "blink" 
    $("#flash").html("<%= escape_javascript(@alert)%>").effect('highlight', {}, 1500); 
<% else %> 
    $("#post_like_<%= @post.id %>").html("<%= @post.num_likes %>"); 
<% end %> 

window.location을 변경하여 사용자를 Ajax 요청에서 로그인 페이지로 리디렉션 할 수 있습니다. 다시 like.js.erb 파일 : 바로 로그인 경로에 대한 링크를 사용하여 로그인하는 사용자를 촉구 플래시 메시지를 표시

<% unless current_user %> 
    window.location = '<%= new_user_session_url %>'; 
<% end %> 

그러나 충분한 수 있습니다.

관련 문제