2017-02-20 123 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 –

相关问题