Ruby on rails RubyonRails全局方法

Ruby on rails RubyonRails全局方法,ruby-on-rails,Ruby On Rails,我有一个用户控制器,它由一个名为listfolders()的方法组成 class UserController

我有一个用户控制器,它由一个名为listfolders()的方法组成

class UserController
在我拥有的视图中,我能够获取文件夹:

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

问题:我想显示所有页面中的文件夹,如撰写、拖动、垃圾等。。。而不仅仅是为了行动


我该怎么做呢?

如果我完全理解,你需要一些
:在你的控制器中的过滤器
初始化
@listfolders
@users
变量之前,你可以轻松地移动代码,将文件夹+部分模板加载到单元格组件中,然后从任何视图调用该单元格

选中此项:

它的工作方式与
render:partial
调用类似,但会添加一个类似控制器的进程,该进程应加载用户文件夹,然后创建要渲染的部分

另一种可行的方法是在应用程序控制器上有一个方法来加载文件夹。然后将调用该方法的before_筛选器添加到应该呈现文件夹的每个操作。 最后,您可以创建一个共享部分,以便在每个应显示该部分的视图上进行渲染


注意:如果仅显示子控制器的同一控制器的操作上的文件夹,则可以在更特定的控制器中定义加载文件夹的方法

实现这一点的基本标准方法是使用助手

module ApplicationHelper
  def listfolders(user_id)
    lf = UsersFolders.listfolders(user_id)
    render 'users_folders/listfolders', :listfolders => lf
  end
end
然后在app/views/users\u folders/\u listfolders.html.erb中

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

调用它非常简单:

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

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