Rails: разрешить частичную визуализацию только один раз - PullRequest
1 голос
/ 07 октября 2011

Есть ли способ кодировать частичку рельсов так, что она может быть отрисована только один раз, независимо от того, сколько раз содержащее представление пытается ее отрендерить?

Почему: Страница состоит из серии меньших частей виджета. Каждый виджет имеет несколько небольших ссылок в правом верхнем углу для отображения «всплывающих» форм, которые собирают данные от пользователя. Эти всплывающие окна являются частями, включенными частями виджета. Щелкнув по этим ссылкам, вы обнаружите частичку всплывающего окна в DOM (по идентификатору), отобразите ее и разместите под ссылочной ссылкой. Частицы виджетов не могут знать, какие другие виджеты включены в эту страницу, но я хочу включить каждый необходимый поповер один и только один раз в DOM.

Если это все еще сбивает с толку, то установка выглядит примерно так:

  • Просмотр страницы
    • Виджет частичный 1
      • Popover частичный A
    • Виджет частичный 2
      • Popover частичный B
      • Popover частичный C
    • Виджет частичный 3
      • Поповер частичный B
      • Popover частичный D

Здесь A, B, C и D должны появляться в DOM только один раз, несмотря на то, что B явно включен дважды.

Я думаю, что-то вроде #ifndef в C, где мы гарантируем, что заголовки включаются только один раз.

Примечание: Я использую Rails 2.3

1 Ответ

2 голосов
/ 07 октября 2011

Вы можете использовать переменные экземпляра.Тем не менее, вы должны убедиться, что переменные экземпляра привязаны только к представлениям и не будут сбои.

Что-то вроде:

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

Если вы можете собирать вещи поповера ранов контроллере было бы чище просто отобразить все всплывающие окна в одном месте.Поскольку я не знаю, какова ваша точная структура, я могу просто дать вам то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...