Ruby on rails Rails使记录可用于应用程序视图

Ruby on rails Rails使记录可用于应用程序视图,ruby-on-rails,ruby,model-view-controller,Ruby On Rails,Ruby,Model View Controller,我有一个模块列出了事件(事件框),我想将其定义为应用程序.html.erb的一部分: <div id="left_sidebar"> <%= render 'shared/user_box' %> <%= render 'shared/event_box' %> <%= render 'shared/server_info_box' %> </div> before_filter :fetch_events

我有一个模块列出了
事件
事件框
),我想将其定义为
应用程序.html.erb
的一部分:

<div id="left_sidebar">
    <%= render 'shared/user_box' %>
    <%= render 'shared/event_box' %>
    <%= render 'shared/server_info_box' %>
</div>
before_filter :fetch_events

def fetch_events
  @events = Event.all
  # @events = Event.where({}) can be used to lazy load the events
end

如果它将出现在应用程序布局中,我如何向它传递
@events
,而不在应用程序的每个视图中定义
@events

ApplicationController
中定义一个获取所有事件的方法。 将此方法用作
ApplicationController
中的
前置过滤器。
ApplicationController
中调用的过滤器将应用于从其继承的所有控制器

应用程序\u控制器.rb

<div id="left_sidebar">
    <%= render 'shared/user_box' %>
    <%= render 'shared/event_box' %>
    <%= render 'shared/server_info_box' %>
</div>
before_filter :fetch_events

def fetch_events
  @events = Event.all
  # @events = Event.where({}) can be used to lazy load the events
end

因为这将在每个动作之前执行,请考虑使用该视图的特定部分。

您可以在共享/EnvikBox部分中尝试下面的代码。它会起作用的

<% @events = Event.all %>
<% @events.each do |event| %>
  <p><%= event.column_name %></p>
<% end %>


谢谢!非常好,感谢链接到片段缓存。