2010-08-11 2 views
0

В моем приложении rails мои модели имеют метод to_html. Этот метод вызывается в одном из представлений, поэтому атрибуты модели могут отображаться правильно независимо от их классов (потому что все мои классы реализуют этот метод)RHTML to string - rails

Это аккуратное решение, но меня беспокоит одна вещь. Мне нужно написать этот html-код внутри двойных кавычек (как строки) и в конечном итоге избежать других двойных кавычек, которые я использую в своем html-коде вручную.

Вместо этого я хотел бы работать с файлами rhtml: читать их, оценивать в нем возможный рубиновый код и возвращать результат в виде строки с необходимыми экранированными символами. Я дам вам пример:

Следующий код:

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

при обработке должна вернуть мне:

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

Кто-нибудь знает что-то, что уже делает это, или может мне точку в хорошее направление? Я думал написать код, который делает это сам. Но если что-то уже работает, я бы с удовольствием его использовал.

Благодаря

ответ

0

Вы можете использовать Еврорадио непосредственно за пределами ваших взглядов, если вы хотите. Например:

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

вернется

<label>testing123</label> 

Тем не менее, я не совсем уверен, почему вы хотите метод to_html в модели классах, поскольку это нарушает разделение между моделью, видом и контроллер, который так хорошо обеспечивает Rails. Я оставлю это вам!

+0

Спасибо, Shadwell. А со следующей структурой: ERB.new << - EOF <метка для = «BlaBla»><%= v %> EOF Я даже не нужно, чтобы избежать двойных кавычек, когда я один. Я использую to_html, чтобы избежать ifs на моих контроллерах и/или представлениях при отображении моделей. Он сохраняет код в чистоте. – Renan