Я использую помощник автоматической метки формы для создания меток формы и перевода их с помощью поддержки i18n, однако я хочу иметь HTML-код в ярлыке, и я не могу понять, как сделать его безопасным для HTML.
Например:
en:
helpers:
label:
product:
name: 'Your Product Name <small>Try to be creative</small>'
Заканчивается как:
<label for="product_name">Your Product Name <Try to be creative></label>
Но я хочу, чтобы это было:
<label for="product_name">Your Product Name <small>Try to be creative</small></label>
Есть ли способ указать перевод как html_safe, чтобы он не был закодирован перед выходом?
Кроме того, это похоже на самый семантический способ настройки HTML, но я открыт для предложений, если я приближаюсь к этому совершенно неверно.
Спасибо:)
Обновлено:
<%= form_for @product do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<% end %>
Ответ 1
Не знаю, как ваш фактический помощник, но вы можете использовать html_safe
для этого легко (при условии, что ваше значение метки не будет введено другими пользователями).
что-то вроде: t("helpers.label.product.name").html_safe
Если это не работает, укажите свою реализацию вашего вспомогательного метода или только строки для вывода результата.
====== ОБНОВЛЕНО ======
Благодаря вашему обновленному коду, теперь я знаю, какой лучший ответ: D
Я тоже не знаю, если вы действительно хотите helpers.label.product.name
.
Но есть другой способ, который, я думаю, будет лучше, который определяется следующим образом:
en:
activerecord:
attributes:
product:
labels:
name: "Your Product Name <small>Try to be creative</small>"
Если вы не хотите создавать свой собственный построитель форм, используйте это:
= f.label :name, Product.human_attribute_name("labels.name").html_safe
Собственно, если вы определяете свой собственный построитель форм, легко переопределить метод меток для автоматического создания текста.
Ответ 2
Способ сделать нормальный ключ автоматически html безопасным в rails3 заключается в добавлении _html или .html к имени ключа. Например. NAME_HTML. Это работает только с помощью метода translate/t в представлении, т.е. Не через I18n.t. Это не будет работать здесь, хотя, поскольку стандартный помощник формы не пытается использовать эту версию ключа.
Создание собственного построителя форм - это путь, который будет предложен. Вы также можете сделать
f.label :name, t('helpers.label.product.name_html')
Если это происходит только в нескольких местах.
Ответ 3
Другой вариант - сделать следующее:
name: '<span>Your Product Name <small>Try to be creative</small></span>'