你如何处理rails中的小部件?

时间:2011-06-06 13:56:08

标签: ruby-on-rails ruby

例如,StackOverflow将用户的声誉显示在最顶层。显然,这是从数据库中获取的,它显示在每个页面上。当然,这不是每个页面上的每个控制器动作,因为这将是非常多余的。

你如何在铁轨中处理这种情况?我能想到的唯一方法是使用before_filter将模型传递到页面中,但这似乎就是滥用该功能。好像cells宝石可以做我想要的,但我想这是一个常见的问题,必须有一个简单的解决方案,它不需要诉诸插件或宝石。

3 个答案:

答案 0 :(得分:1)

您正在寻找的是布局。在rails中,您可以在此处定义构建站点的页眉,页脚和侧边栏。在生成的rails代码中查找app / views / layouts / application.html.erb。在底部你会看到:

<body>

<%= yield %>

</body>

产量是应用程序的其余部分被调用的地方。收益率之前和之后的所有内容都会出现在每一页上。因此,使用您的示例,您可以查询数据库并在应用程序控制器中设置实例变量@reputation:

@reputation = User.find( current_user ).reputation

然后在布局中显示如下:

<body>

<%= @reputation %>

<%= yield %>

</body>

“使用Rails进行敏捷Web开发”一书对此进行了详细介绍。如果您打算在Rails中开发,我建议您使用最新版本。

答案 1 :(得分:0)

我只是将窗口小部件放在一边,然后在你希望它出现的布局中呈现它。让它做任何它需要做的事情,例如连接到数据库,运行一些js连接到外部站点等。

如果你担心优化问题,那么当它出现问题时就处理它。

答案 2 :(得分:0)

我想,您可以将所需的代码放入视图助手中。然后在你希望它出现的布局中渲染一些局部的,就像之前说过的那样,调用helper的函数。 看这里: Rails view helpers in helper file