菜单显示在所有页面上,代码在所有控制器中复制

时间:2011-02-18 20:25:00

标签: ruby-on-rails view controller

我有一个收藏模型。我成功创建了一个_collection.html.erb,我在应用程序布局中使用<%= render @collections%>调用。

我的问题是,在我的所有控制器方法中,我必须添加@collections = Collection.all

我发现它非常非常难看,它会让我的收藏范围变得很难改变,而且我确信我错过了一些更好的东西。

有没有办法让模型数据生成部分布局,而AAAALLLLLL控制器中没有相同的代码?

2 个答案:

答案 0 :(得分:5)

请注意,您的控制器都是从ApplicationController继承的。使用它对您有利。添加before_filterApplicationController加载您的馆藏。

答案 1 :(得分:1)

@cam是对的。任何rails项目都有一个ApplicationController。你的控制器都以MyController&lt; ApplicationController,对吗?如果是这样,这意味着您可以在ApplicationController中创建一个before_filter,它将由所有控制器继承。为此:

/app/controllers/application_controller.rb

before_filter :load_collection

def load_collection
    @collections = Collection.all
end

从现在开始,您可以使用所有控制器中的@collections(只要它们从ApplicationController继承)