我正在尝试显示特定订单的里程碑列表。 (订单有许多里程碑。)
在我的订单模型中,我有这个:
scope :open, lambda {
joins("join milestones on milestones.order_id = orders.id").
where("order_id = ? AND milestone_status = ?", :params[:order_id], true).
group("orders.id")
}
我遇到的问题是让当前的订单ID生效 - :params [:order_id]显然是错误的。
在我的路线中,我有这个:
resources :orders do
resources :milestones
end
我的网址如下:
http://127.0.0.1/orders/2/milestones
这怎么可能?我已通过手动更换订单ID来测试范围。
- 编辑 -
根据以下建议,我在里程碑控制器中添加了以下内容:
@orders = Order.open( params[:order_id] )
在我看来,我有这个:
<%@ orders.each do | open | %GT;
但是我收到了一个错误:
wrong number of arguments (1 for 0)
完整的堆栈跟踪在这里:http://pastie.org/2442518
答案 0 :(得分:4)
像这样定义:
scope :open, lambda { |order_id|
joins("join milestones on milestones.order_id = orders.id").
where("order_id = ? AND milestone_status = ?", order_id, true).
group("orders.id")
}
然后在你的控制器上调用它:
def index
@orders = Order.open( params[:order_id] )
end