我正在使用允许用户将新内容添加到货件箱的a。例如:
用户正在设置货件,每个货件可以包含多个方框,每个方框可以包含多个内容。
所以我link_to_remote
连接如下:
在我的装运箱中部分:
<div class="shipping_box" id="shipping_box">
#some code
<%= link_to_remote "Add box conents", :url => {:action=> 'add_box_contents'} %>
</div>
在add_box_contents.rjs
:
page.insert_html :bottom, "shipping_box", :partial => 'box_content', :object => BoxContent.new
并在_box_content.erb
<div class="box_contents" id="box_contents">
box contents partial rendered
</div>
对于我的第一个发货箱,一切正常,但是当动态添加第二个发货箱时,_box_content.erb
部分始终在第一个框的<div>
中呈现。当然这是因为id被指定为shipping_box
,并且所有框都共享此id。那么我的问题是,如何在div中为正确的包含框部分渲染新的盒子内容,而不仅仅是第一个盒子?
此屏幕截图显示第一个框,其中包含2个动态添加的内容行(下拉列表)。我希望第二个框的“添加订单行项目”行将下拉列表添加到我的第二个框的内容中。 alt text http://img12.imageshack.us/img12/6274/screenshot20100622at114.png
答案 0 :(得分:0)
您的rj应该使用replace_html()
代替insert_html()
page.replace_html "shipping_box", :partial => 'box_content', :object => BoxContent.new
答案 1 :(得分:0)
您实际上想要渲染部分“select_order_line”,以便只将相应的部分添加到装运箱中。所以只考虑一下,然后你可以写:
page.insert_html :bottom, "box_content", :partial => 'select_order_line'