2011-10-07 108 views
1

有沒有一種方法可以編寫一個Rails局部區域,使得它只能渲染一次,無論包含視圖嘗試渲染多少次?Rails:允許局部渲染只能渲染一次

原因:頁面由一系列較小的小部件部分組成。每個小部件在右上方都有一些小鏈接,用於顯示「彈出式窗體」,用於收集用戶的數據。這些彈出窗口是部件包含的部分。單擊這些鏈接可在DOM中找到部分彈出窗口(按ID),顯示它並將其放置在點擊鏈接下方。小部件無法知道該頁面中包含了哪些其他小部件,但我希望在DOM中只包含一次所需的每個彈出式窗口。

如果這仍然是混亂的,設置是一樣的東西

  • 頁面視圖
    • 窗口小部件的部分1
      • 酥料餅的局部甲
    • 的widget部分2
      • Popover部分B
      • 酥料餅的局部Ç
    • 的widget部分3
      • 酥料餅的部分乙
      • 酥料餅的局部d

這裏A,B,C,和d應每個在DOM中只出現一次,儘管B明確包含兩次。

我在C想着類似#ifndef的東西,我們在這裏確保頭只包含一次。

注:我使用Rails 2.3

回答

2

你可以利用實例變量。但是,您必須確保實例變量僅限於視圖,並且不會崩潰。

喜歡的東西:

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

<% popover_partials.each do |pp| %> 
    <% if [email protected]_partial_rendered_popovers.include?(pp) %> 
    <% @widget_partial_rendered_popovers << pp %> 
    display the popover 
    <% end %> 
<% end %> 

如果你能在控制器年初收集酥料餅的事情,這將是清潔只是呈現在一個地方的所有popovers。因爲我不知道你的確切結構是什麼,我可以給你你需要的東西。

+0

我最終做了這樣的事情,謝謝! –