Rails:允许部分只渲染一次

时间:2011-10-07 17:27:29

标签: ruby-on-rails ruby

有没有办法对rails部分进行编码,使得它只能渲染一次,无论包含的视图尝试渲染多少次?

为什么:页面由一系列较小的窗口小部件组成。每个小部件在右上角都有一些小链接,用于显示“popover”表单,这些表单从用户收集数据。这些弹出窗口是小部件部分包含的部分。单击这些链接可在DOM中找到popover partial(按id),显示它,并将其定位在单击的链接下方。小部件部分无法知道此页面中包含哪些其他小部件,但我想在DOM中只包含一次所需的弹出窗口。

如果这仍然令人困惑,则设置类似于

  • 网页浏览量
    • Widget partial 1
      • Popover partial A
    • Widget partial 2
      • Popover partial B
      • Popover partial C
    • Widget partial 3
      • Popover partial B
      • Popover partial D

这里A,B,C和D应该只在DOM中出现一次,尽管B被明确包括两次。

我在想C中的#ifndef,我们确保标题只包含一次。

注意:我正在使用Rails 2.3

1 个答案:

答案 0 :(得分:2)

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

类似的东西:

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

<% popover_partials.each do |pp| %>
  <% if !@widget_partial_rendered_popovers.include?(pp) %>
    <% @widget_partial_rendered_popovers << pp %>
    display the popover
  <% end %>
<% end %>

如果你能够在控制器的早期收集弹出的东西,那么只需在一个地方渲染所有的弹出窗口就更清晰了。由于我不知道你的确切结构是什么,我可以给你你所需要的东西。