ぽんこつメモ

https://github.com/kanorimon

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