「レールを使用したアジャイル Web 開発」の本をフォローしています。私は問題があります。これはコントローラーの私のnew
方法ですorder
:
def new
@cart = current_cart
if @cart.line_items.empty?
redirect_to store_url, notice: "Your cart is empty"
return
end
@order = Order.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @order }
end
end
そして、これはテストです:
test "should get new" do
cart = Cart.create
session[:cart_id] = cart.id
li = LineItem.create(product: products(:ruby))
li.cart = cart
get :new
assert_response :success
end
はrake test
失敗を示しています。
Expected response to be a <:success>, but was <302>
次のようにrailsコマンドラインで確認しました:
cart = Cart.create
=> #<Cart id: 24, created_at: "2012-07-09 08:39:36", updated_at: "2012-07-09 08:39:36">
products = Product.create(:title => "Lorem Ipsum", :description => "Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem", :price => 49.50, :image_url => "ruby.png")
=> #<Product id: nil, title: "Lorem Ipsum", description: "Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem", image_url: "ruby.png", price: #<BigDecimal:434f108,'0.495E2',18(45)>, created_at: nil, updated_at: nil>
li = LineItem.create(product: products)
=> #<LineItem id: 106, product_id: nil, cart_id: nil, created_at: "2012-07-09 08:41:29", updated_at: "2012-07-09 08:41:29", quantity: 1, price: nil, order_id: nil>
li.cart = cart
=> #<Cart id: 24, created_at: "2012-07-09 08:39:36", updated_at: "2012-07-09 08:39:36">
li.cart
は対応する を示していますcart
が、cart.line_items
空です。2 つのモデル (carts と line_items) を相互に関連付けます。なぜcart.line_items
空なのですか?