2017-02-20 75 views
0

我創建了一個Rails應用程序,允許訪問者在線閱讀雜誌。我創建了兩個腳手架,一個用於雜誌本身,另一個用於雜誌內的頁面,這將成爲掃描圖像。未定義的方法'+'爲#<Class >

事情是,我使用頁碼(整數)作爲參考,而不是id,因爲我想雜誌的第一頁的url看起來像這樣:localhost:3000/magazines/magazine-test/1,而不是它的ID。所以,當上傳一本新雜誌時,我會創建一個循環,在循環索引的幫助下增加pagazine頁面的編號。

這裏是我的「創造」的動作,讓你有一個很好的觀點是什麼我談論:

def create 
    @magazine = Magazine.new(magazine_params) 

    if @magazine.save 
     (params[:images] || []).each_with_index do |image, index| 
     @magazine.pages.create(image: image, page_number: index + 1) 
     end 
     redirect_to @magazine, notice: 'Magazine créé' 
    else 
     render :new 
    end 
    end 

我的問題是,如果我嘗試更新這本雜誌,並添加幾頁,頁碼將回落至1。所以,我想修改我的「更新」行動如下:

def update 
    if @magazine.update(magazine_params) 
     if params[:images] 
     (params[:images] || []).each_index do |image, index| 
      @pages = @magazine.pages.order("page_number DESC").first 
      @magazine.pages.create(image: image, page_number: @pages + index + 1) 
     abort(@pages) 
     end 
     end 
     redirect_to @magazine, notice: 'Magazine mis à jour' 
    else 
     render :edit 
    end 
    end 

然而,用這種方法,我得到以下錯誤:NoMethodError in MagazinesController#update undefined method '+' for #<Page:0x007fe694b15af8>

我嘗試了一些東西(如將該變量轉換爲整數),但仍然出現此錯誤。

任何人作爲一個想法?

預先感謝您

回答

1

改變這一行:

@magazine.pages.create(image: image, page_number: @pages + index + 1) 

@magazine.pages.create(image: image, page_number: @pages.page_number || 0 + index + 1) 
+0

我嘗試這樣做,我得到了以下錯誤:'無不能強迫Fixnum' – Jaeger

+0

我做了一個編輯,醜陋的,哈克,但應該給你一個想法如何解決它 –

+0

||意思是「或」,所以如果@ pages.page_number返回零,它將使用0 –

相關問題