2008-09-25 21 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 
相關問題