如何设置应用程序布局使用的变量

时间:2011-12-21 18:10:23

标签: ruby-on-rails ruby-on-rails-3

我有一个广告列表需要显示在我网站的所有页面中,因此我将列表添加到应用程序布局中。像这样:

<div>
    <%= render @ads %>
<div>

我希望在呈现应用程序布局之前从数据库中检索广告列表,但是在使用其他布局时却不是这样,所以我猜想before_filter不是解决方案,对吗?

我应该把这段代码放在哪里?

@ads = Ad.all

提前致谢!

3 个答案:

答案 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>