私はしばらくの間作業してきたプログラムを持っています。これは基本的なバーコードスキャンシステムです。 、私は起こるしたいもの、コントローラ変数へのRails変数の受け渡し
今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作成することです:生のこだわり
私のコントローラは以下の通りです生の(生のための)クラス。その後、受信機能では、在庫内の一致する商品を検索してから、1つのユニットを商品在庫に追加します。
しかし、いったんscanned.quantity += 1
行になると、このメソッドはnilクラスでは定義されていないというエラーが発生し続けます。
私はscanned.quantity.nil?
ラインに追加しました。そのフラッシュメッセージが表示されるので、問題は数量がゼロであることと関係しています。しかし、私はどのようにこれを修正するか分からない。
助けが必要ですか?
はどのようにして 'scanned'がnilである場合には受信になっている:それは
Raw.new(raw_params)
変更すべきですか? –
'quantity 'は' nil'ではありませんが、 'scanned'は' nil'です。エラーメッセージの理解を助けるために、 'quantity'はあなたが' nil'に等しい 'scanned'からアクセスしようとしているメソッドです。 – sjagr