我創建了一個允許用戶閱讀雜誌的導軌應用程序。查找上一個或下一個數組
爲此,我創建了兩個腳手架,一個用於雜誌,另一個用於其中的頁面。然後我做了一對多的關係,所以頁面屬於雜誌。
每個頁面都是一個圖像,因爲它們是數字化的,然後以多上傳的形式上傳。
最近,我工作的小組要求我找到一種方法,允許用戶同時閱讀兩個頁面,因此我做了一些調整,並且它的工作原理類似於魅力。
不過,我現在有一個問題:我想設置一些「以前」和「下一個」鏈接,但我不能找到一種方法,這樣做
這是我迄今所做的:
magazine_controller.rb
def create
@magazine = Magazine.new(magazine_params)
if @magazine.save
@index = 0
(params[:images] || []).each_with_index do |image, index|
if index.even?
#This way, @index increments every other upload
#So I'm sure I have two images with the same page_number
@index += 1
end
@magazine.pages.create(image: image, page_number: @index)
end
redirect_to @magazine, notice: 'Magazine créé'
else
render :new
end
end
型號/ page.rb
class Page < ApplicationRecord
belongs_to :magazine
validates_presence_of :magazine
mount_uploader :image, PageUploader
def previous
self.class.first.where('page_number < ?', page_number).limit(1).first
end
def next
self.class.first.where('page_number > ?', page_number).limit(1).last
end
end
的意見/頁/ show.html.erb
<% @page.each do |p| %>
<%= image_tag p.image %>
<%= p.inspect %>
<% end %>
<br />
<%= @page.first.page_number %>
<%= link_to '< Précédent', magazine_page_path(magazine_id: @magazine.slug, id: @page.previous) if @page.previous %>
<%= link_to 'Suivant >', magazine_page_path(magazine_id: @magazine.slug, id: @page.next) if @page.next %>
<br />
<%= link_to 'Back', magazines_path %>
page_controller.rb
private
def set_page
@magazine = Magazine.find_by(slug: params[:magazine_id])
#was 'find_by' before I was asked to show two records at the same time
@page = @magazine.pages.where(page_number: params[:id])
end
與此代碼
所以,我得到錯誤undefined method 'previous' for #<Page::ActiveRecord_AssociationRelation:0x007ff4f702ad48>
。我不知道如何找到是否有下面的「頁面」。
任何想法的歡迎!
預先感謝您
對不起它花了很長時間來回復,我試過你的代碼,現在它說'未定義的局部變量或方法'page_set'',它不應該是「new_page_set」嗎? – Jaeger
是的,對不起,斑點。現在糾正了。 – SteveTurczyn
所以,它「工作」(我不再有錯誤),但我的鏈接沒有顯示出來,似乎它找不到前後任何東西,而我知道它有一些東西 – Jaeger