我创建了一个带有会话对象中存在的线条项目的购物车。 我无法理解我如何连接到购物车显示页面, 如果该手车存在的话, 只要链接到一个手车是空的页面, 如果它不存在的话。 我错过了什么? 我的代码如下:
- Cart has_many line_items, & lineitems belongs to Cart
View Link , I wasn t sure what I should put here and where to define it for example... "if current_cart.empty? cart", or "if @cart.line_items.empty? current_cart", etc.
<% if current_cart.line_items.empty?%>
<%= link_to "cart", cart_path, :class => headertab %>
<% else %>
<%= link_to "cart", cart_path(current_cart), :class => headertab %>
<% end %>
这给了我以下错误:
Showing /Users/dave/rails_projects/EquiptMe/app/views/layouts/_headerexterior.html.erb where line #20 raised:
undefined local variable or method `current_cart for #<#<Class:0x007fae841cc8e0>:0x007fae83339698>
Extracted source (around line #20):
17: <li><%= link_to "browse gear", /gear , :class => headertab %></li>
18: <li><%= link_to "join", /signup , :class => headertab %></li>
19: <li>
20: <% if current_cart.line_items.empty?%>
21: <%= link_to "cart", cart_path, :class => headertab %>
22: <% else %>
23: <%= link_to "cart", cart_path(current_cart), :class => headertab %>
<强 > 运行 强 >
Outdoor::Application.routes.draw do
resources :line_items
resources :carts
.....
<强 > 应用控制器 强 >
class ApplicationController < ActionController::Base
protect_from_forgery
private
def current_cart
Cart.find(session[:cart_id])
rescue ActiveRecord::RecordNotFound
cart = Cart.create
session[:cart_id] = cart.id
cart
end
end
< 坚固> 电源控制器“ 显示 ”, “ 销毁” & amp; “ 创建” 强 >
def show
begin
@cart = Cart.find(params[:id])
rescue ActiveRecord::RecordNotFound
logger.error "Attempt to access invalid cart #{params[:id]}"
redirect_to /gear , notice: Invalid cart
else
respond_to do |format|
format.html # show.html.erb
format.json { render json: @cart }
end
end
def destroy
@cart = current_cart
@cart.destroy
session[:cart_id] = nil
respond_to do |format|
format.html { redirect_to carts_url, notice: Your cart is currently empty }
format.json { head :no_content }
end
end
def create
@cart = Cart.new(params[:cart])
respond_to do |format|
if @cart.save
format.html { redirect_to @cart, notice: Cart was successfully created. }
format.json { render json: @cart, status: :created, location: @cart }
else
format.html { render action: "new" }
format.json { render json: @cart.errors, status: :unprocessable_entity }
end
end
end
< 坚固 > 列项目控制器“ 创建” 强>
def create
@cart = current_cart
gear = Gear.find(params[:gear_id])
@line_item = @cart.add_gear(gear.id)
respond_to do |format|
if @line_item.save
format.html { redirect_to @line_item.cart }
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
end
感谢您的帮助! < 强/ 强 >