2011-05-20 2 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

Спасибо всем за ваши комментарии –

0

Если я все понимаю правильно, вы нужны некоторые :before_filter в контроллере для инициализации @listfolders и @users переменных

0

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

Проверьте это: http://cells.rubyforge.org/

Он будет работать так же, как render :partial вызовы, но будет добавить контроллер как процесс, который должен загрузить пользовательские папки, а затем создаст парциальное быть оказаны.

Другим подходом, который должен работать, является наличие метода на application_controller для загрузки папок. Затем добавьте before_filter, который вызывает этот метод для каждого действия, которое должно отображать папки. Наконец, вы можете создать общий фрагмент, который будет отображаться на каждом из видов, которые должны показывать это.

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

Смежные вопросы