我创建了一个Rails应用程序,允许访问者在线阅读杂志。我创建了两个脚手架,一个用于杂志本身,一个用于杂志内的页面,这将是扫描图像。
问题是,我使用页码(整数)作为参考而不是id,因为我希望杂志的第一页网址看起来像这样:localhost:3000/magazines/magazine-test/1
而不是它的ID。因此,在上传新杂志时,我创建了一个循环,在循环索引的帮助下递增了pagazine页面的数字。
这是我的#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.所以我尝试编辑我的"更新"行动如下:
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>
我尝试了一些事情(比如将变量转换为整数),但我仍然遇到此错误。
任何人都是一个想法?
提前谢谢
答案 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)