【问题标题】:Rails: allowing a partial to only be rendered onceRails:只允许部分渲染一次
【发布时间】:2011-10-07 17:27:29
【问题描述】:

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

原因:页面由一系列较小的小部件部分组成。每个小部件在右上角都有一些小链接,用于显示“弹出”表单,这些表单从用户那里收集数据。这些弹出框是小部件部分包含的部分。单击这些链接会在 DOM(按 id)中找到弹出框部分,将其显示出来,并将其放置在单击的链接下方。小部件部分无法知道此页面中包含哪些其他小部件,但我想在 DOM 中包含每个必需的弹出框一次且仅一次。

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

  • 页面浏览量
    • 小部件部分 1
      • 弹窗部分A
    • 小部件部分 2
      • 弹出部分 B
      • Popover 部分 C
    • 小部件部分 3
      • 弹出部分 B
      • 弹窗部分 D

这里 A、B、C 和 D 在 DOM 中应该只出现一次,尽管 B 被显式包含了两次。

我在想像 C 语言中的 #ifndef 这样的东西,我们确保标题只包含一次。

注意:我使用的是 Rails 2.3

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

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

    类似:

    # 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 %>
    

    如果您能够在控制器的早期收集弹出框的内容,那么将所有弹出框渲染在一个地方会更干净。由于我不知道你的确切结构是什么,我可以给你你所需要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多