45

在 Rails 应用程序中,在什么情况下会使用 partial 以及何时使用 helper?我发现两者非常相似,因为它们代表标记片段。

有没有围绕这个的约定?使用它们的“导轨方式”是什么?

谢谢!

4

6 回答 6

30

我想我的经验法则是使用一个助手来构建一个单一的“单元”显示——比如一个包含链接的跨度——并使用一个部分来构建一个由多个“单元”组成的更复杂的显示单元”的显示——像一个网格或一个菜单。

于 2008-12-30T01:53:18.777 回答
18

部分是视图片段,在多个地方都有用的视图片段并被拉出以消除重复。然而,底线是视图 - 独立的或部分的 - 用于呈现。

如您所知,控制器用于处理逻辑。然而,在呈现视图时不可避免地需要一些逻辑处理。因此,例如,如果您有一些仅对管理员可用的演示文稿,您可能会将该逻辑提取到帮助程序并保持视图“纯”和仅演示文稿。助手将不可避免地包含演示代码 - html 标记等 - 但这是它们使用的副产品,而不是它们的主要功能。

您还可以将两者结合起来 - 一个用于管理演示,另一个用于用户演示,以及一个具有逻辑的助手,以确定在特定情况下呈现哪个。

只是我的 0.02 美元。

于 2008-12-30T02:55:10.553 回答
8

其他答案代表了关于使用助手与部分的概念共识。考虑以下内容以供进一步阅读:

Basecamp 开发人员提出了在帮助程序中最小化 HTML 的案例 http://37signals.com/svn/posts/1108-what-belongs-in-a-helper-method

Viget 开发人员对每个基准进行了基准测试,发现助手比部分更快 http://www.viget.com/extend/helpers-vs-partials-a-performance-question/

于 2011-03-03T07:28:43.917 回答
2

当代码很可能在其他项目中再次使用时,我使用帮助程序,以及特定于项目的代码的部分。

于 2008-12-30T02:38:04.643 回答
2

我使用部分作为子模板(即,带有大量标记的东西,如博客文章简介)和帮助处理显示更多逻辑的东西(例如,只有管理员可见的 div)。

于 2008-12-30T02:45:01.090 回答
0

部分是视图的一部分,它可以有一堆 HTML 代码和 ruby​​ 代码。您还可以在渲染方法中使用控制器中的部分。

在助手的情况下,您可以使用短 html 代码的方法。您可以在视图文件中使用一些与计算相关的方法。

于 2011-03-03T07:36:30.460 回答