Rails3 ¿Cómo puedo usar: params en un alcance con nombre?

Estoy intentando mostrar una lista de hitos para un pedido en particular. (Los pedidos tienen muchos hitos).

En mi modelo de pedidos, tengo esto:

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")
    }

El problema que tengo es hacer que funcione el ID de pedido actual: params [: order_id] es claramente incorrecto.

En mis rutas tengo esto:

resources :orders do
     resources :milestones
  end

Y mi URL es la siguiente:

http://127.0.0.1/orders/2/milestones

¿Cómo es esto posible? He probado el osciloscopio reemplazándolo manualmente con un ID de pedido.

- EDITAR -

Según los consejos a continuación, puse lo siguiente en mi controlador de hitos:

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

Y en mi opinión, tengo esto:

<% @ orders.each do | open | %>

Pero me sale un error:

wrong number of arguments (1 for 0)

El stacktrace completo está aquí: http://pastie.org/2442518

preguntado el 27 de agosto de 11 a las 13:08

Servirá. Simplemente apareció. Pegará más tarde. Gracias de nuevo -

@ Mauricio-Linhares. He editado mi respuesta con el seguimiento completo, gracias por la ayuda. -

¿Qué está intentando conseguir con este alcance, los hitos del pedido? order_id que tienen un true ¿estado? Su intención no está clara a partir de su pregunta, realmente ayudaría tener una mejor idea de lo que está buscando. -

¿Lo conseguiste al final? Tengo el mismo problema: stackoverflow.com/questions/19667615/… -

1 Respuestas

Defínalo así:

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")
}

Y llámalo en tu controlador así:

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

Respondido 27 ago 11, 17:08

Gracias. He puesto el controlador de hitos pero me sale un error. He actualizado mi pregunta. Jx - Jenny Blunt

¿Agregaste el |order_id| parte de la lambda? - Eric

@Eric - sí, seguido como arriba. - Jenny Blunt

@ mauricio-linhares Aún no puedo hacer que funcione lo anterior. Alguna posibilidad de ayuda :) jx - Jenny Blunt

Agregue la fuente actual completa que está utilizando, falta algo en su código. - Maurício Linhares

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.