例如,我想让我的侧边栏有几个动态内容。使用其他方法将导致我将查询代码放入View中,这根本不是一个好主意。我想在我的控制器中保留任何查询。
目前我知道有几个ff。方法:
渲染共享部分 - >无论在何处放置查询
render :partial => "shared/sidebar"
内容 - >评论中的其他详细信息
<%= yield :sidebar %>
<% content_for :sidebar do %>
<a href="http://www.netscape.com">Netscape</a><br>
<a href="http://www.lycos.com">Lycos</a><br>
<a href="http://www.walmart.com">Wal Mart</a><br>
<% end %>
第三个是直接写入布局文件。
那我该怎么做呢?
答案 0 :(得分:9)
如果你想在每个视图中使用它,你可以在application_controller中放置填充必要数据的方法,并使用before_filter来触发它。
before_filter :load_sidebar
def load_sidebar
@data = Thingy.find(:all)
end
然后你的partial或content_for元素检查@data和进程。
答案 1 :(得分:1)
如果您想减少application_controller.rb
中的代码数量,可能需要考虑使用Cells gem。
这将允许您在单独的单元格控制器中定义“查询”,并使用视图中的render_cell :sidebar, :myquery
等内容为其呈现内容。