有没有办法对rails部分进行编码,使得它只能渲染一次,无论包含的视图尝试渲染多少次?
为什么:页面由一系列较小的窗口小部件组成。每个小部件在右上角都有一些小链接,用于显示“popover”表单,这些表单从用户收集数据。这些弹出窗口是小部件部分包含的部分。单击这些链接可在DOM中找到popover partial(按id),显示它,并将其定位在单击的链接下方。小部件部分无法知道此页面中包含哪些其他小部件,但我想在DOM中只包含一次所需的弹出窗口。
如果这仍然令人困惑,则设置类似于
这里A,B,C和D应该只在DOM中出现一次,尽管B被明确包括两次。
我在想C中的#ifndef
,我们确保标题只包含一次。
注意:我正在使用Rails 2.3
答案 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 %>
如果你能够在控制器的早期收集弹出的东西,那么只需在一个地方渲染所有的弹出窗口就更清晰了。由于我不知道你的确切结构是什么,我可以给你你所需要的东西。