试图从不同的控制器渲染@categories

时间:2013-06-10 19:21:25

标签: ruby-on-rails ruby twitter-bootstrap view partial

我正在使用forem并尝试呈现所有类别的列表(由一个控制器提供),并且应该显示在论坛的每个页面上。问题是,我试图将@categories从CategoriesController拉到侧边栏,该侧边栏将在整个网站的不同页面上。

2 个答案:

答案 0 :(得分:1)

“做错了”

所有类别的列表应来自Categories模型或帮助程序代码,而不是控制器。控制器用于处理传入的HTTP请求,不应与其他控制器交互。

您应该将侧边栏放在应用程序布局中,然后在应用程序控制器的before_filter中定义@categories

答案 1 :(得分:1)

这是使用“演示者”的完美案例。

我同意@Narfanator;你应该从类别模型而不是控制器中提取类别。但是,我不喜欢在应用程序控制器中使用before_filter,除非您想在站点中的所有页面上显示类别。

看一下这篇文章http://www.derekhammer.com/2012/11/06/a-pattern-for-rails-presenters。如果您喜欢通过视频学习,请查看http://railscasts.com/episodes/287-presenters-from-scratch?view=comments。该视频为您提供了使用演示者的示例。这将大大清理您的代码并简化您的生活。