首先,如果您需要更多詳細信息,請不要猶豫,我會盡量保持清晰。從三重嵌套實體檢索結果時發生問題/錯誤數據
我創建了一個網站,允許用戶創建mangas,創建3個腳手架:一個用於漫畫本身,有許多章節,屬於漫畫,並且裏面有很多頁面。
爲了獲得更好的用戶體驗,我使用章節號和頁碼替換了URL中的ID,並使用FriendlyID在URL中包含漫畫的名稱,因此漫畫第一章的第一頁看起來像下面:localhost:3000/epic-manga/1/1
。由於所有的路由都是嵌套的,因此路由本身需要三個參數:'manga_id','chapter_number'和'page_number'。然而,我沒有發現設置漫畫變量的有用之處,因爲我知道Rails知道我在說什麼。然而,當我在納入我的佈局的頁面,我意識到,Rails的是顯示錯誤的結果:
private
#Peji stands for 'page' in japanese, don't ask
def set_peji
@chapter = Chapter.find_by(chapter_number: params[:chapter_id])
@peji = @chapter.pejis.find_by(scan_number: params[:id])
end
Rails的醫生說那是find_by「將選擇其研究相匹配的第一個項目。當我加載頁面時,SQL請求如下所示:SELECT 'chapters'.* FROM 'chapters' WHERE 'chapters'.'chapter_number' = 1 LIMIT 1
。然而,每一個mangas至少有第一章。
我最大的問題是,我真的不知道如何設置「set_peji」功能將搜索範圍限制到擁有該章節/頁的漫畫,所以我嘗試了以下內容:
def set_peji
@manga = Manga.find_by(slug: params[:manga_id])
@chapter = @manga.chapters.find_by(chapter_number: params[:chapter_id])
@peji = @manga.chapters.pejis.find_by(scan_number: params[:id])
end
然而,我有這個錯誤,結果是:undefined method 'pejis' for #<Chapter::ActiveRecord_Associations_CollectionProxy:0x007fbe30667380>
,同時瞄準包含'@peji'的行(我試圖用'@ chapter.pejis'替換'@ manga.chapters.pejis',但它給我一個錯誤的結果)
我沒有任何其他想法,我願意接受任何建議。
預先感謝您!
你是對的,我是如此接近它驅使我瘋了!萬分感謝! – Jaeger
@Jaeger歡迎編程和/或導軌。 10年後,我開始減少這些錯誤;) –
2年半,我很樂意讓它接近功能代碼:D – Jaeger