我目前正在尝试使用link_to
与创建用于动态创建的项目,而不是使用链接的helper方法new_object_path
方法。 Rails 3中允许多态的URL,这fl00r帮助我识别和形式我本来正在寻找使用。 然而,在使用Rails的polymorphic_url
如下所示方法并通过HTTP请求的参数,返回的页面上的相关表单字段没有填写,并没有得到设置。 我试图建立一个order_item
从order
也从一个内置photo
。
有谁看到什么错吗? 相关代码如下:
# 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
这里是原来的问题:
我试图创建一个链接来创建一个[:new, @order, @order_item]
其中@order_item.photo_id
可以在链路上通过。
现在,我不知道是否是有很大的意义,所以我会尽力在这里澄清我的问题。
从我所看到的,Rails 3中有链接到资源利用结构作为数组操作的新望语法[:action, object]
或深度嵌套资源, [:action, parent, child]
。 对于这个特殊的例子,我使用link_to [:new, @order, :order_item]
这些按钮将被连接到一个图片库每张照片。
是否有可能通过id
的照片作为属性photo_id
新订单项目的?
到目前为止,我已经试过link_to [:new, @order, :order_item], :photo_id => photo.id
,但似乎并没有工作。 我也试图把:photo_id
在一个明确的哈希值。 有没有办法遵循这一新的语法和实现这样的功能?
更新:我真的希望能找到沿线的东西:
link_to "new photo", [:new, @order, :order_item => {:photo_id => photo.id}]
在那里我有种做:建立但比刚刚从供应的建设者模型的属性更多。
UPDATE 2011年4月11日我得到它的工作,我可以传递一个属性到使用GET请求polymorphic_url
,如下图所示:
# 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
这似乎是它应该是工作。 我可以看到,似乎是工作按预期GET请求:
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"}
和网址与预期一致,但形式似乎并不相扶从URL中的变量。
的:ORDER_ID作品。 的:photo_id,但是,似乎并不被结转到的OrderItems#新的一页。 我创建了一个text_field
为:photo_id
,每一次它是空的。 它在attr_accessible
。 我不明白为什么它不工作。