Rails3如何在命名范围内使用:params?

我正在尝试显示特定订单的里程碑列表。 (订单有许多里程碑。)

在我的订单模型中,我有这个:

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 

我的url如下:

http://127.0.0.1/orders/2/milestones

这怎么可能? 我已通过手动替换订单ID来测试范围。

– 编辑 –

根据下面的建议,我在里程碑控制器中添加了以下内容:

 @orders = Order.open( params[:order_id] ) 

在我看来,我有这个:

但是我收到一个错误:

 wrong number of arguments (1 for 0) 

完整的堆栈跟踪在这里: http : //pastie.org/2442518

像这样定义:

 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