だから、私はレール(およびルビー)にかなり慣れていないので、ここですべてがうまくいかないところを理解しようとしています. 私はウェブショップでカートに取り組んでいます。ユーザーは、カートのアイテム (この場合は line_item.rb) が保存されているセッションを取得します。
問題: 商品をクリックすると、カート メソッド add_product を介してカートに追加されます。同じアイテムを 2 回追加する代わりに、同じアイテムをもう一度クリックすると、そのアイテムの数量プロパティに ++1 が加算されます。しかし、2回目にクリックすると、次のエラーページが表示されます。
LineItemsController#create の NoMethodError
undefined method `+' for nil:NilClass
ここに私のcart.rbがあります:
class Cart < ActiveRecord::Base
has_many :line_items, dependent: :destroy
def add_product(product_id)
current_item = line_items.find_by_product_id(product_id)
if current_item
current_item.quantity += 1
Rails.logger.debug(current_item.quantity)
else
current_item = line_items.build(:product_id => product_id)
end
current_item
end
end
line_item の数量プロパティは整数型です。それに整数を追加できるはずですよね?現時点で迷っているところです。
line_items_controller.rb の「作成」メソッドは次のとおりです。
def create
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product.id)
@line_item.product = product
respond_to do |format|
if @line_item.save
format.html { redirect_to @line_item.cart,
notice: 'Line item was successfully created.' }
format.json { render json: @line_item,
status: :created, location: @line_item }
else
format.html { render action: "new" }
format.json { render json: @line_item.errors,
status: :unprocessable_entity }
end
end
終わり
何か案は?
乾杯