Crear un atributo anidado a partir de varios objetos principales

Actualmente estoy tratando de usarlink_to con un método auxiliar que crea enlaces para crear elementos dinámicamente, en lugar de utilizar elnew_object_path métodos. Rails 3 permite URL polimórficas, que fl00r me ayudó a identificar y usar en la forma que estaba buscando originalmente. Sin embargo, mientras usa Rails 'polymorphic_urll método @ como se muestra aquí pasa el argumento en la solicitud http, el campo de formulario relacionado en la página devuelta no se completa y no se está configurando. Estoy tratando de construir unaorder_item desde unorder que también se construye a partir de unaphoto.

¿Alguien ve lo que está pasando aquí? El código relacionado está debajo:

# the helper method
def add_cart_button_for(arr, attr_hash={})
  link_to button(:cart_add), polymorphic_url( [:new] + arr, attr_hash )
end

# the call in index.html.haml
= add_cart_button_for [current_order, :order_item], :photo_id => photo.id

# _form.html.haml for order_item
- form_for [ @order, @order_item ] do |f|
  %p
    = f.label :photo_id
    %br
    = f.text_field :photo_id
Aquí está la pregunta original:

Estoy tratando de crear un enlace para crear una[:new, @order, @order_item] dónde@order_item.photo_id se puede pasar en el enlace.

Ahora, no estoy seguro de si eso tiene mucho sentido, así que intentaré aclarar mi problema aquí.

De lo que he visto, Rails 3 tiene una sintaxis nueva para vincular a acciones de recursos utilizando una matriz estructurada como[:action, object] o para recursos profundamente anidados,[:action, parent, child]. Para este ejemplo en particular, estoy usandolink_to [:new, @order, :order_item]. Estos botones se adjuntarán a cada foto en una galería de fotos.

¿Es posible pasar laid de la foto como el atributophoto_id del nuevo artículo de pedido?

Hasta ahora he intentadolink_to [:new, @order, :order_item], :photo_id => photo.id, pero eso no parece funcionar. También he intentado poner:photo_id en un hash explícito. ¿Hay alguna manera de seguir esta nueva sintaxis y lograr esta funcionalidad?

Update: Realmente espero encontrar algo similar a:

 link_to "new photo", [:new, @order, :order_item => {:photo_id => photo.id}]

donde estoy haciendo un tipo de: compilación pero con algo más que los atributos del modelo de generador que se suministra.

ACTUALIZA 11 abr 2011 Lo hice funcionar donde puedo pasar un atributo a una solicitud de obtención usandopolymorphic_url como se ve a continuación:

# the helper method
def add_cart_button_for(arr, attr_hash={})
  link_to button(:cart_add), polymorphic_url( [:new] + arr, attr_hash )
end

# the call in index.html.haml
= add_cart_button_for [current_order, :order_item], :photo_id => photo.id

Esto parece que debería estar funcionando. Puedo ver la solicitud de obtención que parece estar funcionando como se esperaba:

Started GET "/orders/1/order_items/new?photo_id=130" for 127.0.0.1 at 2011-04-11 18:11:07 -0400
  Processing by OrderItemsController#new as HTML
  Parameters: {"photo_id"=>"130", "order_id"=>"1"}

y la url es la esperada, pero el formulario no parece captar esa variable de la url.

The: order_id funciona. El: photo_id, sin embargo, no parece estar transfiriéndose a la nueva página OrderItems #. Creé unatext_field para:photo_id, y está vacío cada vez. Está en elattr_accessible. No veo por qué no funciona.

Respuestas a la pregunta(2)

Su respuesta a la pregunta