我有一个广告列表需要在我的网站的所有页面中显示,因此我将该列表添加到应用程序布局。事情是这样的:如何设置应用程序布局使用的变量
<div>
<%= render @ads %>
<div>
我想从数据库中检索到的广告列表中的应用程序布局呈现之前,而不是在使用另一种布局,所以我想这是的before_filter不解决,对吧?
我应该在哪里放这段代码?
@ads = Ad.all
在此先感谢!
我有一个广告列表需要在我的网站的所有页面中显示,因此我将该列表添加到应用程序布局。事情是这样的:如何设置应用程序布局使用的变量
<div>
<%= render @ads %>
<div>
我想从数据库中检索到的广告列表中的应用程序布局呈现之前,而不是在使用另一种布局,所以我想这是的before_filter不解决,对吧?
我应该在哪里放这段代码?
@ads = Ad.all
在此先感谢!
鉴于广告名单应在网站的每个网页上显示,那么这样的事情应该工作:
class ApplicationController < ActionController::Base
before_filter :preload_ads
private
def :preload_ads
@ads = Ad.all
end
end
如果您确定它一定会在单一布局中使用(并没有其他),你可以只是加载它在布局:
<div>
<%= render Ad.all %>
<div>
不错的解决方法...谢谢! – alf 2011-12-21 19:57:25
谢谢!但是当另一个布局被渲染时,db查询也被执行,对吗?我试图找到性能方面的最佳选择。 – alf 2011-12-21 18:20:20
如果您想在每个页面上显示广告列表,则无论呈现哪种布局,都需要在每个操作之前加载它。 – maprihoda 2011-12-21 18:52:12
没错,但我有例如内部用于服务的另一个布局。我不希望调用这个服务来执行无用的数据库查询。 – alf 2011-12-21 18:58:42