未定义的方法&#39; +&#39;对于#<class>

时间:2017-02-20 09:24:55

标签: ruby-on-rails controller nomethoderror

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

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

这是我的#34;创建&#34;行动,以便您对我所谈论的内容有一个很好的看法:

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.所以我尝试编辑我的&#34;更新&#34;行动如下:

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 个答案:

答案 0 :(得分:1)

更改此行:

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

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