railsアプリ開発(もっと読む改善)
Ajaxでinsert,deleteすると、kaminariでは取得開始がずれます。
うまく回避する方法がわからなかったので、sessionを使って「もっと読む」を実装してみました。
index.html.erb
<% if @count_memos == 0 %>
<span>もうありません</span>
<% else %>
<%= link_to 'more', load_more_path , :remote => true, :id => "load_more_link" %>
<% end %>
index.js.erb
$('#posts').append("<%= escape_javascript(render :partial => @memos)%>");
<% if @count_memos == 0 %>
$('#load_more_link').hide();
<% end %>
memos_controller.rb
def showlist
# ユーザーのmemoを取得
@memos = Memo.where("user_id =? and id < ?", current_user.id,last_memo.id).order('id desc').limit(5)
# sessionに保存
session[:last_memo_id] = @memos.last.id
# 最終ページであるかの判断
@count_memos = Memo.count(:conditions => ["user_id =? and id < ?", current_user.id,@memos.last.id])
# 画面表示
render 'contents/index.js.erb'
end
application_controller.erb
# 読み込み最終行設定
helper_method ::last_memo
private
def last_memo
@last_memo ||= Memo.find(session[:last_memo_id]) if session[:last_memo_id]
end