2012-08-31 32 views
0

我已經構建了一個簡單的內容管理系統,並且我正在嘗試構建一個動態導航欄,但我想到的方法是不斷嚮應用程序發送所有頁面的數組每個控制器的模板。有沒有更好的方法呢?發送數組到每個模板

+1

而不是你可以放在ApplicationController中的每個控制器 –

回答

1

由於@Amit帕特爾提到在對你的問題的評論中,更好的方法是將你引用的代碼移動到ApplicationController

應用程序中的所有控制器擴展了ApplicationController類。您希望在所有控制器之間共享的任何功能均可放置在此類中。

舉個例子(因爲你沒有提供實際的代碼),您可以設置此爲before_filter

class ApplicationController < ActionController::Base 
    before_filter :build_pages_array 

    # Your other ApplicationController code here... 

    private 

    def build_pages_array 
     @pages = Page.all 
    end 
end 

的的before_filter將在所有控制器的所有操作運行,有效地使@pages可用到應用程序中的每個模板。

0

您可以將ApplicationHelperapp/helper/application_helper.rb)模塊中創建一個方法,你會從你的觀點到達這個方法:

module ApplicationHelper 
    def get_your_array 
    # create your array here 
    end 
end 

在您的觀點:

<% get_your_array.each |item| -%> 
    <%= item %> 
<% end -%>