Подтвердить что ты не робот

Rails 3: использование HTML в i18n форме хелперных переводов

Я использую помощник автоматической метки формы для создания меток формы и перевода их с помощью поддержки i18n, однако я хочу иметь HTML-код в ярлыке, и я не могу понять, как сделать его безопасным для HTML.

Например:

en:
  helpers:
    label:
      product:
        name: 'Your Product Name <small>Try to be creative</small>'

Заканчивается как:

<label for="product_name">Your Product Name &lt;Try to be creative&gt;</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 %>
4b9b3361

Ответ 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>'