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 %>
谢谢!非常好,感谢链接到片段缓存。