我有一个广告列表需要显示在我网站的所有页面中,因此我将列表添加到应用程序布局中。像这样:
<div>
<%= render @ads %>
<div>
我希望在呈现应用程序布局之前从数据库中检索广告列表,但是在使用其他布局时却不是这样,所以我猜想before_filter不是解决方案,对吗?
我应该把这段代码放在哪里?
@ads = Ad.all
提前致谢!
答案 0 :(得分:2)
鉴于广告列表应该显示在网站的每个页面上,那么这样的事情应该有效:
class ApplicationController < ActionController::Base
before_filter :preload_ads
private
def :preload_ads
@ads = Ad.all
end
end
答案 1 :(得分:2)
如果您正在寻找可测试且稳定的解决方案,请使用cell components。
答案 2 :(得分:1)
如果您确定它只会在单一布局中使用(而不是其他布局),那么可以只在布局中加载它:
<div>
<%= render Ad.all %>
<div>