Расширение приложения "депо" для включения всего товара в корзину

Я работаю над созданием приложения для депо из книги "Гибкая веб-разработка с рельсами". Я хочу изменить его функциональность, чтобы вместо корзины, отображаемой в боковом столбце, вместо этого я получил утверждение с "(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.

Другие вопросы по тегам