#<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)
我创建了一个 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)