2011-05-20 141 views
2

我有一個用戶控制器,它由一個名爲listfolders()的方法組成。ruby​​ on rails全局方法

class UserController < ApplicationController 

def myaccount() 

    userId = session[:id] 

    @listfolders = UsersFolders.listfolders(userId) 

    @users = User.listusers() 


    end 
end 

在我的意見,我能夠獲取的文件夾:

問題:我想顯示在像撰寫,drafs,垃圾等所有頁面的文件夾...而不是僅僅爲了行動。

我該怎麼辦?

回答

3

這樣做的基本標準方法是幫手。

module ApplicationHelper 
    def listfolders(user_id) 
    lf = UsersFolders.listfolders(user_id) 
    render 'users_folders/listfolders', :listfolders => lf 
    end 
end 

然後在應用程序/視圖/ users_folders/_listfolders.html.erb

<% listfolders.each do |userfolder| %> 
<tr> 
    <td><a href="#" target="cstr"><b><%= userfolder.foldername %></b></a></td> 
</tr> 
<% end %> 

調用它一樣簡單:一切爲了您的意見

<% listfolders(session[:id]) %> 
+0

謝謝 – 2011-05-21 02:47:41

0

如果我明白了一切正確的,你需要一些:before_filter在控制器初始化@listfolders@users變量

0

您可以輕鬆地移動代碼的文件夾+部分模板加載到電池組件,然後調用從該小區任何視圖。

檢查: http://cells.rubyforge.org/

它將工作就像render :partial電話,但會增加一個控制器一樣的過程,應該加載用戶的文件夾,然後將創建要呈現的部分。

應該工作的另一種方法是在application_controller上有一個方法來加載文件夾。然後將before_filter添加到應該呈現文件夾的每個操作中。 最後,您可以創建一個共享部分,以在應顯示的每個視圖上呈現。

注意:如果只顯示來自子控制器的同一控制器的操作的文件夾,則可以在更具體的控制器中定義加載文件夾的方法。