Как я могу написать выражение erb с экранированием атрибутов в двойных кавычках и получить правильное поведение экранирования?
Например, мне нужно что-то, что будет выводить:
value="Hello World"
если should_print_value истинно, и при условии, что myvalue = Hello World
Изменить: Примечание. myvalue может содержать вредоносный контент.
Подход 1
Если я попробую что-то вроде
<%= "value=\"#{myvalue}\"" if should_print_value %>
erb будет экранировать двойные кавычки, что приведет к value="Hello и другому атрибуту с именем World"=""
Подход 2
Самое простое решение, которое я придумал, это сделать:
<% if should_print_value %>
value="<%= myvalue %>"
<% end %>
Но мне все еще любопытно, возможно ли использовать синтаксис <%= "value=.... %> Подхода 1.
"value=\"#{myvalue}\"".html_safe. Чего вы пытаетесь достичь? Может есть более простой способ. - person BroiSatse   schedule 24.03.2015myvalueне является доверенным и может содержать вредоносный XSS-контент, поэтому.html_safeнеприемлем. - person mark   schedule 24.03.2015valueк элементу HTML в шаблоне erb (среди других условных атрибутов). В моем случае это тег ввода текста. - person mark   schedule 24.03.2015