2013-05-08 2 views
0

jQuery Ajax를 제 레일 애플리케이션에 구현하려고하는데 지금까지 작동하지만 버그가 있습니다. 기본적으로, 나는 각 페이지를 will_paginate를 사용하여 5 페이지 씩 묶어서 나열하는 책 페이지를 가지고 있습니다.Rails 3.2 : 첫 번째 클릭 후 will_paginate 페이지 링크가 사라집니다.

도서보기에 대한 나의 index.html.erb 파일이 코드 조각이 있습니다

<div id="page_paginate"> 
    <%= will_paginate @books %><br /> 
    <%= render @books %> 

</div> 

@books 부분 _book.html.erb로 저장을하고 다음과 같습니다

<div class="books_box"> 
<h1><%= book.title%><span>(<%=link_to book.author.name, book.author%>)</span></h1> 
    <img alt="image" src="<%= book.image_url %>"> 
    <div class="book_info"> 
     <div class="detail_button"><%= link_to "Details", '#' %></div> 
     <div class="like_button"><%= link_to "Like", '#' %></div>     
    </div 

$(function() { 
    $("#page_paginate .pagination a").live("click", function() { 
    $.getScript(this.href); 
    return false; 
    }); 

}); 
: 내 application.js 파일에서

, 나는 다음과 같은 코드가 있습니다

그리고 나는 또한 뷰/책 디렉토리에 index.js.erb 파일이 있습니다

$("#page_paginate").html("<%= escape_javascript(render(@books))%>") 

문제는 다음과 같습니다 매김은 아약스와 함께 완벽하게 작동

동안; 페이지는 페이지를 다시로드하지 않고 돌아서 모든 페이지 링크가 첫 번째 클릭 후 사라집니다. 다시 표시하려면 books_url로 돌아 가야합니다. 나는 책 부분이 방법을 <퍼센트 = will_paginate %> 퍼팅 시도했다 :

<%= will_paginate @books %><br /> 
<div class="books_box"> 
    <h1><%= book.title%><span>(<%=link_to book.author.name, book.author%>)</span></h1> 
     <img alt="image" src="<%= book.image_url %>"> 
     <div class="book_info"> 
      <div class="detail_button"><%= link_to "Details", '#' %></div> 
      <div class="like_button"><%= link_to "Like", '#' %></div>     
     </div 

    </div> 

하지만 방법은 페이지 링크는 모든 목록의 상단에 표시됩니다. 내 목표는 페이지 매김 링크가 모든 페이지의 끝 위나 아래에만 표시되도록하는 것입니다. 아마 루프 나 링크를 배치 할 때 문제가 될 수 있다고 생각하지만 초심자가 생각할 수있는 모든 것을 시도했습니다. 나는 약간의 도움에 감사 할 것입니다. 감사합니다

답변

1

다음 코드 <div id="page_paginate"> 내에서 효과적으로 모든 것을 제거

$("#page_paginate").html("<%= escape_javascript(render(@books))%>") 

실행 : 그것은 .html("<%= escape_javascript(render(@books))%>")을 적용하기 전에

<div id="page_paginate"> 
    <%= will_paginate @books %><br /> <!-- This is removed. --> 
    <%= render @books %> <!-- This is also removed. --> 
</div> 

합니다.

<div id="page_paginate"> 
    <%= will_paginate @books %><br /> 
    <div id="books_render"> 
     <%= render @books %> 
    </div> 
</div> 

index.js.erb#books_render 대신 #page_paginate를 선택 : 제거되는 <%= will_paginate @books %><br />을 방지하기 위해

, 다음과 같이 다른 <div><%= render @books %> 포장

$("#books_render").html("<%= escape_javascript(render(@books))%>") 
+0

그것은했다! 고마워요. – muyiwamat

+0

불편을 드려 죄송합니다. 나중에 참조 할 수 있도록 ifrst 장소의 page_paginate div에서 javascript를 이스케이프 처리해야하는 이유는 무엇입니까? – muyiwamat

+0

http://stackoverflow.com/a/1623813/559119 당신이 찾고있는 것이어야합니다. – Sun