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