Rails i18n и структура yml для меток форм

Согласно документации ActionView . Цитата:

По умолчанию текст метки будет иметь имя атрибута, если только перевод не найден в текущей локали I18n (через views.labels. . ) или вы не укажете его явно.

У меня есть " пользовательская модель и форма регистрации. Вот фрагмент соответствующей части:

<% form_for(@user) do |f| %>
    ...
    

<%= f.label :username %> <%= f.text_field :username, :class => 'full_width' %>

... <% end %>

Точки скрывают неважный код.

Как я понимаю документация, если я предоставляю перевод в моем файле локали, в данном случае: dk, my дк. yml выглядит так:

dk:
    views:
        labels:
            user:
                username:
                    "blahblah"

Rails должен перевести текст метки и вставить «blahblah» вместо «Username».

Этого не происходит, поэтому я, должно быть, что-то пропустил. Любая помощь приветствуется.

25
задан rhardih 18 August 2010 в 20:39
поделиться

2 ответа

Думаю, я нашел здесь другое решение.

Мое приложение было версии 2.3.5. Я изменил его на 2.3.8, и <% = f.label: username%> теперь использует перевод в:

dk:
  activerecord:
    attributes:
      user:
        username:

Я нашел подсказку в этом тикете:

https: / /rails.lighthouseapp.com / projects / 8994 / Tickets / 745-form-label-should-use-i18n

30
ответ дан 28 November 2019 в 18:02
поделиться

Это потому, что вызываемый вами метод label не является один из ActionView :: Helpers :: FormHelper , но на самом деле это метод label_tag из ActionView :: Helpers :: FormTagHelper . Метод form_for переписывает код в данном блоке, добавляя _tag к используемым помощникам формы. Значит, вы не ищите в документации нужный метод!

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

1
ответ дан 28 November 2019 в 18:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: