2010-08-11 60 views
0

在我的rails應用程序中,我的模型有一個to_html方法。這種方法在其中一個視圖中被調用,因此模型的屬性可以正確顯示,而不管它們的類是什麼(因爲我的所有類都實現該方法)。RHTML to string - rails

這是一個很好的解決方案,但有一點讓我感到毛骨悚然。我需要在雙引號內(以字符串形式)寫這個html代碼,並最終手動轉義我在我的html代碼中使用的其他雙引號。

我希望能夠使用rhtml文件:讀取它們,評估其中最終的ruby代碼,並將結果作爲字符串與必要的轉義字符一起返回。我給你舉個例子:

下面的代碼:

<label for="blabla"> <%= ruby_variable.name %> </label> 

處理時應該返回我:

"<label for=\"blabla\"> name </label>" 

有誰知道的東西,已經做這或可以點我在好方向?我正在考慮編寫一段自己做的代碼。但是,如果某些東西已經在那裏工作,我很樂意使用它。

謝謝

回答

0

如果需要,您可以直接在視圖之外使用ERB。例如:

require 'erb' 
v = 'testing123' 
output = ERB.new('<label><%= v %></label>').result(binding) 

將返回

<label>testing123</label> 

這麼說,我不是很確定爲什麼你要在你的模型類一個to_html方法,因爲它打破了模型,視圖和之間的距離Rails很好地提供的控制器。儘管如此,我會把它留給你!

+0

謝謝,Shadwell。並用以下結構: ERB.new << - EOF <標籤=「布拉布拉」><%= v %> EOF 我甚至都不需要轉義雙引號時,我有一個。 我使用to_html避免顯示模型時顯示在我的控制器和/或視圖上的ifs。它保持代碼清潔。 – Renan 2010-08-11 15:48:44