0

以前にも質問したことがありますが、問題が何であるかは理解できたと思います。

テーブルdivを保持するページがあります。私はAJAX呼び出しを使用してテーブルを取得します(部分的ではなく、コントローラーに独自のメソッドを持つ別のtable.html.erbです)。

この table.html.erb では、AJAX ページネーションに関するカミナリのガイドラインに従いました。既にあるのに、ページネーションに別の AJAX 呼び出しを使用するのはなぜですか?

ページネーション リンクをクリックすると、Kaminari はリンクを div 内ではなくページ全体にページ付けするためです。

したがって、テーブル div と呼ばれる AJAX 内でパーシャルを使用している理由。しかし、私は今次のページや他のページに行くことができません。私のコンソールでは、正しいクエリが作成されています。実際に右クリックして別のタブでページを開くと、リンクを変更できます (アプリケーションのレンダリングとブートストラップ レイアウトを無効にした場合のみ)。

もう 1 つの理由は、ビューと呼ばれる別の AJAX 内にパーシャルがあるため、Kaminari の別のページをクリックした後にテーブルへの AJAX 呼び出しを行わないと、実際にはテーブルが更新されないことです。 .

要約する:

index.html.erb

<div id="table"><div>

<script> $.ajax({
        url: "http://localhost:3000/request/table",
        type: "GET",
        success: function(data) {
            $("#table").html(data);
        }
    });
</script>

show.html.erb

<table id="table">
    <thead>
        <tr>
            <th> Boop! </th>
        </tr>
    </thead>
    <tbody id="items">
    <% render @items %>
    </tbody>
    <div id="paginator">
        <%=  paginate @items, :remote => true %>
        <%= page_entries_info @items, :remote => true %>
    </div>
 </table>

<script>
    $('#analytics').html('<%= escape_javascript render(@items) %>');
    $('#paginator').html('<%= escape_javascript(paginate(@items, :remote => true).to_s) %>');
</script>

部分: _item.html.erb

<tr>
<td> item.name </td>
<td> item.date </td>
</tr>

要約すれば、

ページネーション リンク (1、2、3、... 次、前) を別のタブまたは完全なページ URL として開くことができます。ページネーション リンクをクリックしてもテーブルを更新できません。

4

1 に答える 1

0

リンクを右クリックして開くと、「html」応答が要求されます。

:remote => true リンクをクリックすると、「js」応答が要求されます....

#table を新しいデータで「更新」するには、Javascript を使用して index.js.erb ビューを作成する必要があります (「インデックス」アクションだと思いますか?)。

于 2013-01-29T08:22:58.073 に答える