RHTML для строки - рельсы

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

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

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

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

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

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

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

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

Спасибо

1 ответ

Решение

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

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

вернусь

<label>testing123</label>

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

Другие вопросы по тегам