2008-09-25 63 views
8

我听说最好不要在你的帮手中有任何html;我的问题是,为什么不呢?此外,如果您试图生成一个html列表或类似的东西,我该如何避免实际的标签?为什么不应该帮助者在他们的HTML?

谢谢!

-fREW

+0

*叹息*。我已经做了很多。分离表示逻辑总是一个好主意,但是我很匆忙,我已经在我的服务器控件和帮助器类中集成了HTML标签,而在其他地方它并不合适。我是个坏人:( – stephenbayer 2008-09-25 15:09:59

回答

15

我的建议 - 如果它的小块HTML(一对标签)不担心它。更重要的是 - 考虑部分内容(因为在助手中拉动HTML字符串是一种痛苦,这是观点擅长的)。

我经常在我的帮助程序中包含HTML(直接或通过调用Rails方法,如link_to)。我的世界并没有在我身边崩溃。事实上,我甚至可以说我的代码非常干净,易于维护和易于理解。

只有昨天晚上,我写了一个link_to_user帮助器,用于将吐出的html与用户的正常链接以及用户的旁边的图标一起吐出。我本来可以做到这一点,但我认为link_to_user是一个更清洁的方式来处理它。

2

这是不是一个完整的回答你的问题,但你可以通过content_tag方法来创建你的标签HTML。我猜为什么会是代码的清洁。

此外,content_tag允许您在块中嵌套标签。看看这个blog post on content_tag

+0

,我可以做到这一点,但实际上这是同样的事情;它仍然是非常具体的视图代码 – 2008-09-25 15:30:46

+0

它有相同的结果,但是是“更清洁”,这是一个类似的论点,发生在Java Web App世界与taglibs对<% %>表达式,最终它取决于你和你的团队决定的“正确的方式” – Sixty4Bit 2008-09-25 15:57:09

0

如前所述,助手通常被认为是用作业务逻辑,用于执行驱动视图代码的事情,但不是视图代码本身。最常见的放置视图代码片段的地方是局部的。如果需要,部分可以调用帮助器,但为了保持事物分离,最好将业务保留在帮助器中并在部分中查看。

另外,请记住这是所有的约定,不是硬性规定。如果有一个很好的理由来打破惯例,那么最好的做法是什么。

5

我没有看到它有什么问题。大多数rails助手生成HTML代码(这是他们的目的) - 对我来说,这意味着这就是你应该自己做的。

然而,代码的可读性始终存在。如果你有一个助手只是建立一大串原始的HTML,那么这将很难理解。虽然它的罚款,以生成助手HTML,你应该做的,使用像content_tag它,render :partial而不仅仅是return %Q(<a href="#{something}">#{text}>)

1

On Rails的3,你可以使用* html_safe *字符串的方法,让您的辅助方法返回的HTML标记,将不会逃脱。

-1

我通常把HTML放入partials中。

思考语义。如果你把html放在一个字符串中,你会失去它的语义方面:它变成了一个字符串而不是标记。非常不一样。例如,您无法验证字符串,但可以验证标记。

我想将html放入帮助器而不是部分(以及我如何找到此线程)的原因很简单。我希望能够写=hr而不是=render 'hr'

要回答这个问题,我没有问;-):对未逃逸HTML的帮手,试试这个

def hr 
    raw '<hr />' 
end 
相关问题