Расширение приложения "депо" для включения всего товара в корзину
Я работаю над созданием приложения для депо из книги "Гибкая веб-разработка с рельсами". Я хочу изменить его функциональность, чтобы вместо корзины, отображаемой в боковом столбце, вместо этого я получил утверждение с "(x) элементами, которые в настоящее время находятся в вашей корзине".
У меня есть этот код:
Контроллер line_items (товаров в корзине):
def create
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product.id)
respond_to do |format|
if @line_item.save
format.html { redirect_to store_url }
format.js { @current_item = @line_item }
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
end
и контроллер тележки:
def show
begin
@cart = Cart.find(params[:id])
rescue ActiveRecord::RecordNotFound
logger.error "Attempt to access invalid cart #{params[:id]}"
redirect_to store_url, notice: 'Invalid cart'
else
respond_to do |format|
format.html # show.html.erb
format.json { render json: @cart }
end
end
end
Как мне ссылаться на корзину из представления макета приложения, чтобы я мог изменить '(x) элементы' на текущее количество элементов в корзине? я пробовал @total_cart.line_items
и все другие варианты, которые я могу придумать.
РЕДАКТИРОВАТЬ: у меня есть код в модели корзины, которая имеет current_item.quantity
Как я могу ссылаться на это в представлении макета приложения, так как это значение, которое я хочу? Спасибо!
1 ответ
Я бы добавил в вашу корзину метод item_count, который добавит количество товаров в корзине.
def item_count
line_items.inject{|sum, line_item| sum + line_items.quantity
end
Затем в представлении макета приложения вы можете просто ссылаться на @cart.item_count.