何时使用助手而不是部分

在一个Rails应用程序中,在哪种情况下你会使用一个部分,你什么时候可以使用一个帮助器? 我发现两者非常相似,因为它们代表标记片段。

这是否有一个约定? 这是使用它们的'rails方式'吗?

谢谢!

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

部分是一个视图片段,是一个在多个位置有用的视图,并被拉出以消除重复。 但是,底线是独立的或者部分的意见。

如你所知,控制器是用于处理逻辑的。 然而,在呈现视图时,您将需要一些逻辑处理,这是不可避免的。 所以,举个例子,如果你有一些只有pipe理员才能使用的演示文稿,那么你可以把这个逻辑提取给一个帮手,并保持视图是“纯粹的”和仅仅是演示文稿。 助手将不可避免地包含演示代码 – html标签等 – 但这是他们使用的副产品,而不是他们的主要function。

你也可以将两者结合起来,一个是pipe理员演示文稿的一部分,另一个是用户演示文稿,还有一个帮助者,用逻辑来确定在特定情况下渲染哪一个。

只是我的$ .02。

其他答案代表关于助手与部分使用的概念共识。 请仔细阅读以下内容:

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

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

当代码可能在其他项目中再次使用时,我使用助手,并且为项目特定的代码部分。

我使用partials作为子模板(即,有很多标记被重复使用,如博客文章blurb)和助手处理显示更多逻辑的东西(例如,只有pipe理员可见的div)。

部分是可以有一堆的HTML代码和Ruby代码的观点的一部分。 您也可以在渲染方法中使用控制器中的部分。

在助手的情况下,你可以有简短的HTML代码段的方法。 你可以有一些计算相关的方法,你想在你的视图文件中使用。