获取rails rjs中父元素的id

时间:2010-06-23 02:45:03

标签: ruby-on-rails rjs erb

我正在使用允许用户将新内容添加到货件箱的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

2 个答案:

答案 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'