#<Class > 的未定义方法“+”

Undefined method '+' for #<Class >

我创建了一个 Rails 应用程序来允许访问者在线阅读杂志。我创建了两个脚手架,一个用于杂志本身,一个用于杂志内部的页面,将扫描图像。

问题是,我使用页码(整数)而不是 id 作为参考,因为我希望杂志第一页的 url 看起来像这样:localhost:3000/magazines/magazine-test/1,而不是它的ID。因此,在上传新杂志时,我创建了一个循环,在循环索引的帮助下增加杂志页码。

这是我的 "create" 操作,以便您清楚地了解我在说什么:

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。所以我尝试按如下方式编辑我的 "update" 操作:

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>

我尝试了一些方法(比如将变量转换为整数),但我仍然遇到此错误。

有人出主意吗?

提前致谢

更改此行:

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

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