回答
我的建议 - 如果它的小块HTML(一对标签)不担心它。更重要的是 - 考虑部分内容(因为在助手中拉动HTML字符串是一种痛苦,这是观点擅长的)。
我经常在我的帮助程序中包含HTML(直接或通过调用Rails方法,如link_to)。我的世界并没有在我身边崩溃。事实上,我甚至可以说我的代码非常干净,易于维护和易于理解。
只有昨天晚上,我写了一个link_to_user帮助器,用于将吐出的html与用户的正常链接以及用户的旁边的图标一起吐出。我本来可以做到这一点,但我认为link_to_user是一个更清洁的方式来处理它。
这是不是一个完整的回答你的问题,但你可以通过content_tag方法来创建你的标签HTML。我猜为什么会是代码的清洁。
此外,content_tag允许您在块中嵌套标签。看看这个blog post on content_tag。
,我可以做到这一点,但实际上这是同样的事情;它仍然是非常具体的视图代码 – 2008-09-25 15:30:46
它有相同的结果,但是是“更清洁”,这是一个类似的论点,发生在Java Web App世界与taglibs对<% %>表达式,最终它取决于你和你的团队决定的“正确的方式” – Sixty4Bit 2008-09-25 15:57:09
如前所述,助手通常被认为是用作业务逻辑,用于执行驱动视图代码的事情,但不是视图代码本身。最常见的放置视图代码片段的地方是局部的。如果需要,部分可以调用帮助器,但为了保持事物分离,最好将业务保留在帮助器中并在部分中查看。
另外,请记住这是所有的约定,不是硬性规定。如果有一个很好的理由来打破惯例,那么最好的做法是什么。
我没有看到它有什么问题。大多数rails助手生成HTML代码(这是他们的目的) - 对我来说,这意味着这就是你应该自己做的。
然而,代码的可读性始终存在。如果你有一个助手只是建立一大串原始的HTML,那么这将很难理解。虽然它的罚款,以生成助手HTML,你应该做的,使用像content_tag
它,render :partial
而不仅仅是return %Q(<a href="#{something}">#{text}>)
On Rails的3,你可以使用* html_safe *字符串的方法,让您的辅助方法返回的HTML标记,将不会逃脱。
我通常把HTML放入partials中。
思考语义。如果你把html放在一个字符串中,你会失去它的语义方面:它变成了一个字符串而不是标记。非常不一样。例如,您无法验证字符串,但可以验证标记。
我想将html放入帮助器而不是部分(以及我如何找到此线程)的原因很简单。我希望能够写=hr
而不是=render 'hr'
。
要回答这个问题,我没有问;-):对未逃逸HTML的帮手,试试这个
def hr
raw '<hr />'
end
- 1. 他们为什么叫做“四人帮”?
- 2. 为什么subprobess.call()和subprocess.Popen打印时,他们不应该?
- 3. Javascript/html的帮助!应该很简单
- 4. 这些水豚配对者为什么会有不同的结果?他们不应该在这里等同吗?
- 5. 为什么不std :: noskipws工作,或者它应该做什么?
- 6. 伙计们帮助....为什么错误信息不显示
- 7. 为什么图像显示比他们应该更大?
- 8. 什么是帮助开发者的iPhone应用程序?
- 9. 来自其他帮助者的流星访问帮助
- 10. 为什么我们应该在接收者中声明队列的名字?
- 11. 为什么我得到这个错误?他们应该改变什么?
- 12. 为什么我的div下降到低于他们应该在的位置?
- 13. 为什么我们不应该在角度上使用jquery?
- 14. 我应该使用像素,他们还是两者都不?
- 15. Scroolbars显示他们何时不应该使用IE 7,为什么?
- 16. Codeigniter中的助手类 - 他们真的很糟糕,为什么?
- 17. 为什么他们两个不相等
- 18. 我应该在哪里应该声明HTML帮助器在ASP.NET MVC 3
- 19. 为什么强类型的Html Helpers帮助我?
- 20. 我们什么时候应该上课,什么时候不应该上课
- 21. 什么“setContentView”帮助
- 22. 为什么Spring的@Transactional帮助性能
- 23. JavaScript中的设计模式对您有帮助吗?他们究竟是什么?
- 24. 为什么我们应该在button_press_event.handler的末尾返回True?
- 25. php,为什么我们不应该使用get('var');
- 26. 为什么我们不应该同时使用jspViewResolver和TilesViewResolver?
- 27. 为什么我们不应该使用(默认)src包?
- 28. 为什么内联模板专业化有帮助,我应该这样做吗?
- 29. Facebook的分享/评论不应该像他们应该
- 30. 值不相等时,他们应该是
*叹息*。我已经做了很多。分离表示逻辑总是一个好主意,但是我很匆忙,我已经在我的服务器控件和帮助器类中集成了HTML标签,而在其他地方它并不合适。我是个坏人:( – stephenbayer 2008-09-25 15:09:59