gpt4 book ai didi

ruby-on-rails - rails : allowing a partial to only be rendered once

转载 作者:行者123 更新时间:2023-12-04 03:09:27 24 4
gpt4 key购买 nike

有没有一种方法可以对 Rails 部分进行编码,使其只能呈现一次,而不管包含 View 尝试呈现它多少次?

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

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

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

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

我在想 C 中类似 #ifndef 的东西,我们确保 header 仅包含一次。

注意:我使用的是 Rails 2.3

最佳答案

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

类似于:

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

如果您能够尽早在 Controller 中收集弹出窗口的东西,那么只在一个地方渲染所有弹出窗口会更干净。因为我不知道你的确切结构是什么,所以我只能给你你需要的。

关于ruby-on-rails - rails : allowing a partial to only be rendered once,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7690727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com