Я создал приложение Rails, чтобы посетители могли читать журналы в Интернете. Я создал два леса, один для самого журнала и один для страниц внутри журналов, которые будут отсканированы.Неопределенный метод '+' для # <Class >
Дело в том, что я использую номер страницы (целое число) как ссылку вместо идентификатора, так как я хочу, чтобы URL-адрес первой страницы журнала выглядел так: localhost:3000/magazines/magazine-test/1
, а не его идентификатор. Таким образом, при загрузке нового журнала я создаю цикл, который увеличивает номер страницы 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>
Я пробовал несколько вещей (например, преобразование переменной в целое число), но я все еще получаю эту ошибку.
Кто-нибудь как идея?
Спасибо заранее
Я попробовал это, я получил следующее сообщение об ошибке: 'ноль не может быть принужден к Fixnum' – Jaeger
Я сделал редактирование, уродливое и взломанное, но должен дать вам представление о том, как его выработать –
|| означает «или», поэтому, если @ pages.page_number возвращает nil, он будет использовать 0 –