为什么助手不应该包含html?
我听说最好不要在帮助程序中实际包含任何html。我的问题是,为什么不呢?而且,如果我们尝试生成html列表或者类似的内容,如何避免使用实际标签?
谢谢!
-fREW
解决方案
这不是我们问题的完整答案,但是我们可以通过content_tag方法在代码中创建html。我的猜测是为什么要保持代码的整洁。
另外,content_tag允许我们将标记嵌套在块中。在content_tag上查看此博客文章。
如前所述,通常认为辅助程序被用作业务逻辑,以完成驱动视图代码但不是视图代码本身的事情。放置会生成视图代码片段的事物的最常规位置是局部的。如果需要,部分对象可以调用帮助程序,但是为了使事情分开,最好将业务保留在该帮助程序中,并在部分视图中进行查看。
另外,请记住,这只是惯例,而不是一成不变的规则。如果有充分的理由违反约定,那就做最好的事情。
我的建议是,如果它是HTML的小片段(几个标签),请不要担心。不仅仅是考虑局部变量(因为在帮助器中将html字符串拉在一起是一种痛苦,这正是视图所擅长的)。
我经常在帮助器中包含HTML(直接或者通过对link_to之类的Rails方法的调用)。我的世界还没有崩溃。实际上,我要说的是因为它,我的代码非常干净,可维护且易于理解。
直到昨晚,我才写了一个link_to_user帮助程序,将带有正常链接的html以及旁边的用户图标吐出来。我可以部分完成它,但是我认为link_to_user是一种更干净的处理方式。
我看不出有什么问题。大多数rails助手对我生成HTML代码(这是他们的目的),这意味着我们应该自己做。
但是,始终存在代码可读性的问题。如果我们有一个仅生成大量原始HTML字符串的助手,那么它将很难理解。虽然可以在辅助程序中生成HTML很好,但是我们应该使用诸如content_tag和render:partial之类的方法,而不是仅仅返回return Q( )`