2017-04-26 110 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到一個單獨的控制器內,你想它的網站廣泛,所以我不確定是否解決了這個問題。 –