Membuat paginasi hanya dengan tombol berikutnya

Saya mencoba membuat tombol berikutnya yang hanya menampilkan satu catatan per halaman. Saya tahu kita bisa menggunakan penomoran halaman tetapi saya hanya ingin memiliki tombol Berikutnya. Jadi, saya membaca postingan berikut dan menerapkannya: Pengontrol pertanyaan saya:

class QuestionsController < ApplicationController
  before_action :set_page, only: [:view]
  QUESTIONS_PER_PAGE = 1
  def view
    questions=[]
    @evaluation = Evaluation.pluck(:content).last
    @evaluation.each do |question|
      questions << question
    end
    @questions=Question.where(:content => questions).limit(QUESTIONS_PER_PAGE).offset(@page*QUESTIONS_PER_PAGE)
    #@questions=Question.where(:content => questions).paginate(page: params[:page],per_page: 1)
  end
  private
    def set_page
       @page = params[:page] || 0
    end

View.html.erb saya yang memberikan kesalahan: tidak ada konversi implisit Integer menjadi String

<h1>Self-Evaluation Exam</h1>

<table id="questions">
    <thead>
        <tr>
            <th>Content &nbsp; &nbsp; &nbsp;</th>
        </tr>
    </thead>
    <tbody>
        <% @questions.each do |question| %>
          <tr>
            <td><%= question.content %></td>
            <td><%= check_box_tag question.c1 %></td>
            <td><%= question.c1%></td>
            <td><%= check_box_tag question.c2 %></td>
            <td><%= question.c2%></td>
            <td><%= check_box_tag question.c3 %></td>
            <td><%= question.c3%></td>
            <td><%= check_box_tag question.c4 %></td>
            <td><%= question.c4%></td>
            <td><%= check_box_tag question.c5 %></td>
            <td><%= question.c5%></td>
          </tr>
        <% end %>
    </tbody>
</table>
<div id = "nav">
    <%= button_to 'Next',questions_path(page: @page + 1) %># this line gives error: no implicit conversion of Integer into String
</div>
<li><%= link_to 'Personal Evaluation',instructions_student_path %></li>

Membuat halaman halaman tanpa permata Berikutnya, Sebelumnya, tombol untuk Nama.order(:id).limit(10).offset(0) Ini menunjukkan halaman pertama tetapi kemudian ketika saya mengklik tombol saya mendapatkan kesalahan PS: tombol berikutnya harus diubah menjadi Kirim ketika itu ada di catatan terakhir. Terima kasih


person amy    schedule 12.04.2018    source sumber


Jawaban (2)


Caranya cukup sederhana, coba lakukan hal berikut ini

QUESTIONS_PER_PAGE = 1
@questions = Question.where(content: questions).offset(QUESTIONS_PER_PAGE * @page).limit(QUESTIONS_PER_PAGE)

private
def set_page
   @page = (params[:page] || 0).to_i
end

ubah ke view.html.erb Anda dengan next >> dan << previous

<div id="nav">
    <nav>
        <ul class="pager">
            <li class="previous <%= @page == 0 ? 'disabled' : '' %>">
                <%= link_to_if page > 0, "&larr; Previous".html_safe, questions_path(page: @page - 1) %>
            </li>
            <li class="next">
                <%= link_to "Next &rarr;".html_safe, questions_path(page: @page + 1) %>
            </li>
        </ul>
    </nav>
</div>

Jadi controller Anda terlihat seperti ini

class QuestionsController < ApplicationController
    before_action :set_page, only: [:view]
    QUESTIONS_PER_PAGE = 1
    def view
        questions=[]
        @evaluation = Evaluation.pluck(:content).last
        @evaluation.each do |question|
          questions << question
        end
        @questions = Question.where(content: questions).offset(QUESTIONS_PER_PAGE * @page).limit(QUESTIONS_PER_PAGE)
    end

    private
    def set_page
       @page = (params[:page] || 0).to_i
    end
end

jika Anda hanya perlu tombol berikutnya pada tampilan Anda, maka gunakan saja

<%= link_to "Next &rarr;".html_safe, questions_path(page: @page + 1) %>

Dengan syarat

<% if @page == @questions.count %>
    <button>Finished</button>
<% else %>
    <%= link_to "Next &rarr;".html_safe, questions_path(page: @page + 1) %>
<% end %>
person fool-dev    schedule 12.04.2018
comment
Terima kasih kembali - person fool-dev; 12.04.2018

Kesalahannya memberi tahu Anda bahwa pembuat url gagal karena mencoba mengonversi bilangan bulat menjadi string. Selain itu, penambahan nilai biasanya +=.

Saya bertaruh params[:page] mengembalikan string, bukan bilangan bulat. Apa yang terjadi jika Anda melakukan @page.to_i += 1? Sesuatu seperti itu setidaknya akan membuat Anda melewati kesalahan awal ini.

person John Athayde    schedule 12.04.2018
comment
Saya mengubahnya di pengontrol saya menjadi params[:page].to_i. Namun, sekarang saya memiliki tombol berikutnya selamanya. Saya ingin menghentikannya ketika saya berada di rekaman terakhir dan tombolnya harus dikirim. Bisakah Anda membantu dalam hal itu? - person amy; 12.04.2018