我正在嘗試創建一個可以在線閱讀的雜誌。爲此,我爲雜誌本身創建了一個腳手架,然後爲第一個頁面嵌套了另一個腳手架。之後,我創建了一個系統,允許從雜誌腳手架進行多重上傳,這將自動在頁面的腳手架內爲同一時間上傳的每張圖片創建一個新條目(一張圖片=一頁)。控制器嵌套元素的增量問題
經過一番嘗試,我認爲設置ID爲頁碼不是很聰明,因爲它會自動增加,不會再從1開始。因此,我在名爲「page_number」的頁腳架內創建了一個新列,當多上傳表單中的第一個圖像上傳/添加到頁腳手架時,該列將被設置爲1,然後下一頁將獲取此數字的增量。
反正這裏是我的控制器(它的相關部分)
class MagazinesController < ApplicationController
#Some code..
def create
@magazine = Magazine.new(magazine_params)
if @magazine.save
if params[:images] #If there are images loaded in the multi upload form
params[:images].each { |image, index| #for each of them...
if index == 0
@magazine.pages.page_number = 1 #Set the first one's page_number to 1
else
@magazine.pages.page_number += 1 #Set its incrementation after that
end
#Save each of the images as a new image from the :image scaffold
@magazine.pages.create(image: image)
}
end
redirect_to @magazine, notice: 'Magazine créé'
else
render :new
end
end
#Some code..
end
我的問題是,即使重新啓動服務器,一旦遷移完成後,當我嘗試上傳新的雜誌後,我得到以下錯誤:undefined method 'page_number' for #<ActiveRecord::Associations::CollectionProxy []>
當我在網上查找時,發現有兩種方法可以通過模型和SQL請求以及通過控制器和此方法遞增事物,這更符合我的需求。我不知道如何解決這個問題,因爲我需要在另一個嵌套元素中指定一些東西,並且一切都很順利,沒有任何問題,並且因爲RubyMine在沒有問題的情況下在「@ magazine.pages」之後添加一個點之後建議這個「page_number」 。
我忘了什麼?
預先感謝您
非常感謝您的明確回答!我現在明白了爲什麼我遇到了這個麻煩,但是,我已經重寫了我的代碼,但是現在我有以下錯誤:未定義方法+'for nil:NilClass',看起來Rails仍然沒有了解「page_number」是什麼.. – Jaeger
對不起,'.each'應該是'.each_with_index do | image,index |'。讓我編輯答案。 – fanta
非常感謝你,我太累了,不知道它是'each_with_index',無論如何,它工作順利,非常感謝你,我不認爲我會自己找到這個解決方案! – Jaeger