Paginate without a gem Weiter, Zurück, Schaltflächen für Name.order (: id) .limit (10) .offset (0)

Ich suche seit über einer Woche nach einer Lösung für mein Problem. Ich habe eine Aufgabe, bei der ich 10 Punkte verloren habe, weil ich keine next / prev-Funktionalität hatte und keine Zeit mehr hatte. Ich möchte das trotzdem herausfinden.

Ich habe eine kurze Seite mit @ erstellrails generate scaffold Ripple name:string message:text url:string zeigt einen Index der 10 neuesten Beiträge an (Name, Nachricht, Erstellt am, Link zu "Anzeigen"). Ich muss noch die nächsten, vorherigen, neuesten und ältesten Links erstellen, um die nächsten 10, vorherigen 10 ... Ergebnisse anzuzeigen. Mein Code.

app\controllers\ripple_controller.rb

class RipplesController < ApplicationController  
  before_action :set_ripple, only: [:show, :update]  
  before_action :restrict_destroy_edit, only: [:edit, :destroy]   
  before_filter :set_page   
  helper_method :link_name_to_url, :next_button, :previous_button, :newest_button, :oldest_button, :is_next_page_available, :is_previous_page_available

  RIPPLES_PER_PAGE = 10

  def index   
    @ripples = Ripple.order(:id).limit(RIPPLES_PER_PAGE).offset(@page * RIPPLES_PER_PAGE) 
  end
  #All my show, new, destroy, edit, create ....

  def next_button

  end

  def previous_button

  end

  def newest_button

  end

  def oldest_button

  end

  def is_next_page_available?

  end

  def is_previous_page_available?

  end

  def set_page 
    @page = 5 
  end
private
...

\app\views\ripples.html.erb

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Message</th>
      <th>Posted</th>
      <th>Show Ripple</th>
    </tr>
  </thead>

  <tbody>
    <% @ripples.each do |ripple| %>
      <tr>
        <td><%= link_name_to_url ripple %></td>
        <td><%= truncate(ripple.message, length: 50) %></td>
        <td><%= ripple.created_at.strftime("%B %d, %Y %l:%M %P") %></td>
        <td><%= button_to 'Show', ripple, :method => "get" %></td>
      </tr>
    <% end %>
  </tbody>
</table>

<br>

<div id = "nav">
  <button><%= link_to 'Newest' %></button>
  <button><%= link_to 'Previous 10 Ripples' %></button>
  <button><%= link_to "Next 10 Ripples" %></button>
  <button><%= link_to 'Oldest' %></button>
  <button><%= link_to 'New Ripple', new_ripple_path, class: "button", method: :get %></button>
</div>

Und ich habe versucht, Methoden in Model aufzurufen, erhalte aber weiterhinundefined method "next" for #<Class:0xb4eabd0c> Fehler beim nächsten und vorherigen.

app\models\ripple.rb

class Ripple < ActiveRecord::Base
  default_scope -> {order(created_at: :desc)}
  validates :name, :message, presence: true
  validates :url, allow_blank: true, format: {
  with: URI::regexp(%w(http https)),
      message: "Must be a url starting with http:// or https://"
  }

  def next
    Ripple.order(:id).limit(10).offset((@page - 1) * 10)
  end

  def previous
    Ripple.order(:id).limit(10).offset((@page + 1) * 10)
  end
end

Wie würde ich next und previous implementieren, indem ich order (). Limit (). Offset verwende und vielleicht @ verwend@page, um zu verfolgen, wo ich mich im ActiveRecord befinde. Vielleicht so etwas wie

def next_button
  @page -= 1
end

das kann ich im Index aufrufen"<%= link_to Next 10" next_button %> so oder so habe ich keine Ideen, die funktionieren könnten.

ielen Dank für jede Hilf