摘自第12章任务4:捕获订单。
Orders控制器中来自@order.add_line_items_from_cart( @cart )的@cart参数来自哪里?通过该方法传递的值是什么?
class OrdersController < ApplicationController
def create
@order = Order.new(order_params)
@order.add_line_items_from_cart(@cart)
end
class Order < ActiveRecord::Base
has_many :line_items, dependent: :destroy
def add_line_items_from_cart(cart)
cart.line_items.each do |item|
item.cart_id = nil
line_items << item
end
end
end
LineItem对购物车和订单都有一对多的关联。由于LineItem与购物车和订单都有关联,这是否意味着它可以访问购物车和订单控制器中的实例变量?
他们如何从其他不是购物车的控制器访问或使用@cart实例变量
其他问题
从'item‘追加到line_items的值是什么
def add_line_items_from_cart(cart)
cart.line_items.each do |item|
item.cart_id = nil
line_items << item
end
end
我是Rails的新手,所以我甚至不确定我问的问题是否正确。
发布于 2015-04-14 21:39:18
如果您在应用程序范围内搜索“@cart”,您肯定会找到@cart的定义位置。除非您正在使用gem,否则我打赌它是在您的某个控制器中的helper方法中定义的。如果@cart被多个控制器使用(这意味着它将被orders_controller使用,也许是users_controller,也许是products_controller),它可能值得在application_controller中检查。
https://stackoverflow.com/questions/29628110
复制相似问题