0

Rails アプリに jQuery Ajax を実装しようとしていますが、これまでのところ機能していますが、頭を包むことができないバグがあります。基本的に、will_paginate を使用してすべての本をリストし、各 5 ページずつグループ化する本のページがあります。

Books ビューの 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

私の application.js ファイルには、次のコードがあります。

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

});

また、views/books ディレクトリに index.js.erb ファイルもあります。

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

問題は次のとおりです。

ページネーションはajaxで完全に機能しますが。ページをリロードせずにページをめくると、最初のクリック後にページネーションのリンクが消え、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>

そうすれば、ページのリンクはすべてのリストの上に表示されます。私の目標は、ページネーション リンクを各ページの末尾の上下にのみ表示することです。おそらくループまたはリンクを配置する場所に問題があると思いますが、初心者の心が想像できることはすべて試しました。少し助けていただければ幸いです。ありがとう

4

1 に答える 1

1

次のコードが実行されると

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

内のすべてを効果的に削除します<div id="page_paginate">

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

適用される前に.html("<%= escape_javascript(render(@books))%>")

外れないようにするには、次のように別の<%= will_paginate @books %><br />ラップで包みます。<%= render @books %><div>

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

in#books_renderの代わりに選択します:#page_paginateindex.js.erb

$("#books_render").html("<%= escape_javascript(render(@books))%>")
于 2013-05-08T14:24:52.320 に答える