2011-10-07 104 views
1

有没有一种方法可以编写一个Rails局部区域,使得它只能渲染一次,无论包含视图尝试渲染多少次?Rails:允许局部渲染只能渲染一次

原因:页面由一系列较小的小部件部分组成。每个小部件在右上方都有一些小链接,用于显示“弹出式窗体”,用于收集用户的数据。这些弹出窗口是部件包含的部分。单击这些链接可在DOM中找到部分弹出窗口(按ID),显示它并将其放置在点击链接下方。小部件无法知道该页面中包含了哪些其他小部件,但我希望在DOM中只包含一次所需的每个弹出式窗口。

如果这仍然是混乱的,设置是一样的东西

  • 页面视图
    • 窗口小部件的部分1
      • 酥料饼的局部甲
    • 的widget部分2
      • Popover部分B
      • 酥料饼的局部Ç
    • 的widget部分3
      • 酥料饼的部分乙
      • 酥料饼的局部d

这里A,B,C,和d应每个在DOM中只出现一次,尽管B明确包含两次。

我在C想着类似#ifndef的东西,我们在这里确保头只包含一次。

注:我使用Rails 2.3

回答

2

你可以利用实例变量。但是,您必须确保实例变量仅限于视图,并且不会崩溃。

喜欢的东西:

# in your view 
<% @widget_partial_rendered_popovers ||= [] %> 

<% popover_partials.each do |pp| %> 
    <% if [email protected]_partial_rendered_popovers.include?(pp) %> 
    <% @widget_partial_rendered_popovers << pp %> 
    display the popover 
    <% end %> 
<% end %> 

如果你能在控制器年初收集酥料饼的事情,这将是清洁只是呈现在一个地方的所有popovers。因为我不知道你的确切结构是什么,我可以给你你需要的东西。

+0

我最终做了这样的事情,谢谢! –