2010-08-11 61 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