2017-04-26 149 views
0

前提:我对Rails很陌生。我试图在应用程序布局中渲染一个部分,这将不得不显示一些Event对象。部分必须显示在应用程序的每个页面中(它基本上是一个侧栏)。我知道,我应该通过一个局部变量的部分,像Rails中的部分共享资源

<%= render partial: "shared/aside", locals: {events: @events} %> 

但是,如果我在应用程序的每一个控制器定义@events才会工作。有没有办法在全球范围内设置它? 可能值得注意的是,事件可能不是局部所需的唯一资源。

+0

你好,你可以添加如何'@事件'看起来像? – Bohdan

回答

0

您可以在应用程序控制器中执行一个之前的操作。之前的行动将在文件的顶部,在底部的私人方法

class ApplicationController < ActiveController::Base 
# Place at top of file 
before_action :set_events 

...your other code... 

# Place at bottom of file 
private 

def set_events 
@events = Event.all 
end 
+0

你好,你可以使用'helper_method'类似http://jgaskins.org/blog/2014/08/25/better-alternative-to-rails-before_action-to-load-objects而不是将数据加载到'before_action'中 – Bohdan

+0

那么他是指定哪些方法应用before_action到一个单独的控制器内,你想它的网站广泛,所以我不确定是否解决了这个问题。 –