簡體   English   中英

Kaminari,分頁,AJAX 奇怪的行為

[英]Kaminari, pagination, AJAX strange behaviour

我設法讓我的 AJAX 頁面加載工作,但我遇到了一些我不知道如何解決的問題:我將每頁的條目數設置為 4。在第一頁上它加載了 4 個項目,但在下一頁上,它加載超過 4 個項目。 為什么?

直播網站: https : //serene-waters-1174.herokuapp.com/

我檢查了日志,發現每次 ajax 加載后OFFSET都不一致。 ON 頁面加載OFFSET就像我想要的那樣,在后續加載中, OFFSET0

Started GET "/users/index?page=2" for ::1 at 2015-06-18 21:17:29 +0200
Processing by UsersController#index as JS
  Parameters: {"page"=>"2"}
  User Load (1.0ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."name" ASC LIMIT 4 OFFSET 4
  Rendered users/_user.html.erb (0.3ms)
   (0.2ms)  SELECT COUNT(*) FROM "users"
  Rendered users/index.js.erb (35.3ms)
Completed 200 OK in 45ms (Views: 42.5ms | ActiveRecord: 1.1ms)


Started GET "/users/index" for ::1 at 2015-06-18 21:17:34 +0200
Processing by UsersController#index as JS
  User Load (0.8ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."name" ASC LIMIT 4 OFFSET 0
  Rendered users/_user.html.erb (0.9ms)
   (0.2ms)  SELECT COUNT(*) FROM "users"
  Rendered users/index.js.erb (48.3ms)
Completed 200 OK in 59ms (Views: 57.1ms | ActiveRecord: 1.0ms)

用戶名

class User < ActiveRecord::Base
      paginates_per 4
end

用戶控制器.rb

class UsersController < ApplicationController
  def index
    @users = User.order(:name).page params[:page]

    respond_to do |format|
        format.html
        format.js {}
    end
  end

  def show
    @user = User.find(params[:id])
  end
end

index.html.erb

<h1>All users in database.</h1>

<div id="paginator">
    <%= paginate @users, :remote => true %>
</div><br>

<div id="list">
    <%= render 'user' %>
</div>

index.js.erb

$('#list').html('<%= escape_javascript render(@users) %>');
$('#paginator').html('<%= escape_javascript(paginate(@users, :remote => true).to_s) %>');

我將不勝感激,幫助我獲得“下一個”鏈接以使用 ajax 加載頁面。

編輯:我從頁面源中意識到沒有所有頁面只顯示 4 個項目。 完美的。 但是在視圖中,它顯示了 4 個項目,並且這些相同的項目重復了 4 次。

編輯:

這在部分修復了它。 我以前在部分上使用.each循環。

<%= "Name: #{user.name}" %> <br>
<%= "Email: #{user.email}" %><br>
<%= "Album: #{user.album}" %>
<p>======</p>

感謝smathy

OFFSETparams[:page] - 正如您在日志中看到的那樣,第二個請求沒有發送:page參數。

然而,這些都不能解釋為什么一個頁面上顯示了超過 4 個用戶,兩個 SQL 查詢都顯示了正確的LIMIT 4所以也許你的 JS 中有另一個錯誤來更新 DOM 或者你的用戶部分並且它正在添加用戶而不是替換他們。

對我.each是將部分保留為.each循環,但更改我的 js.erb 文件以呈現部分而不是實例變量。

$('#certs').html('<%= escape_javascript render "certifications/certification" %>');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM