Итак, у меня есть программа, над которой я некоторое время работал, это просто базовая система сканирования штрих-кода.
Мой контроллер для необработанного товара выглядит следующим образом:
class RawsController < ApplicationController
def new
@raw = Raw.new
end
def create
@raw = Raw.new(params[raw_params])
if @raw.save
receive(@raw)
redirect_to new_raw_path
end
end
def receive(raw)
scanned = Raw.find_by(code: raw.code)
if scanned.quantity.nil?
flash[:danger] = "no match"
else
scanned.quantity += 1
if scanned.save
respond_to do |format|
format.html {}
format.json{}
end
end
end
end
private
def raw_params
params.require(:raw).permit(:code, :product, :quantity)
end
end
Теперь я хочу, чтобы когда кто-то вводит номер штрих-кода в форму, он создавал @raw как экземпляр класса Raw (для сырых товаров). Затем в функции получения он ищет соответствующий продукт в моем инвентаре, а затем добавляет одну единицу в мой инвентарь сырья.
Однако, как только я доберусь до строки scanned.quantity += 1
, я постоянно получаю сообщение об ошибке, что этот метод не определен для класса nil.
Я добавил в строку scanned.quantity.nil?
, и я получаю это быстрое сообщение, поэтому я знаю, что проблема связана с тем, что количество равно нулю. Но я не уверен, как это исправить.
Любая помощь?
scanned
равно нулю? - person j-dexx   schedule 26.07.2016quantity
этоnil
, аscanned
этоnil
. Чтобы помочь вам лучше понять сообщение об ошибке,quantity
— это метод, к которому вы пытаетесь получить доступ изscanned
, который равенnil
. - person sjagr   schedule 26.07.2016