回答
我的建議 - 如果它的小塊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. 爲什麼HTML設計者縮進他們的HTML代碼?
- 2. 什麼是Template.myTemplate.helpers(幫助器),爲什麼我應該使用它?
- 3. 不應該包含的幫助者,但是...我認爲
- 4. 他們爲什麼叫做「四人幫」?
- 5. 爲什麼subprobess.call()和subprocess.Popen打印時,他們不應該?
- 6. Javascript/html的幫助!應該很簡單
- 7. 爲什麼或者爲什麼不應該使用Java 7?
- 8. 這些水豚配對者爲什麼會有不同的結果?他們不應該在這裏等同嗎?
- 9. 他們爲什麼稱他們爲Thunk?
- 10. 爲什麼幫助(42)可以工作,但既不幫助(「」)也不幫助(「x」)?
- 11. 夥計們幫助....爲什麼錯誤信息不顯示
- 12. 爲什麼不std :: noskipws工作,或者它應該做什麼?
- 13. 我們應該什麼時候把弱者變成強者?
- 14. 行不應該像他們應該
- 15. 什麼是幫助開發者的iPhone應用程序?
- 16. 什麼「你應該可以`chown`他們」是什麼意思?
- 17. 爲什麼圖像顯示比他們應該更大?
- 18. 來自其他幫助者的流星訪問幫助
- 19. 爲什麼我們不應該在PHP類中包含html標記?
- 20. 爲什麼我們應該在接收者中聲明隊列的名字?
- 21. std :: chrono :: ... :: time_point上的構造函數是否應該noexcept? (?或者他們爲什麼不)
- 22. 爲什麼我得到這個錯誤?他們應該改變什麼?
- 23. 爲什麼我的div下降到低於他們應該在的位置?
- 24. 爲什麼我們不應該在角度上使用jquery?
- 25. 爲什麼我們不應該在Java中使用
- 26. 我應該使用像素,他們還是兩者都不?
- 27. Codeigniter中的助手類 - 他們真的很糟糕,爲什麼?
- 28. 爲什麼我們應該在HTML中使用字符實體作爲符號?
- 29. Scroolbars顯示他們何時不應該使用IE 7,爲什麼?
- 30. 爲什麼他們兩個不相等
*嘆息*。我已經做了很多。分離表示邏輯總是一個好主意,但是我很匆忙,我已經在我的服務器控件和幫助器類中集成了HTML標籤,而在其他地方它並不合適。我是個壞人:( – stephenbayer 2008-09-25 15:09:59