Согласно документации 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».
Этого не происходит, поэтому я, должно быть, что-то пропустил. Любая помощь приветствуется.
Думаю, я нашел здесь другое решение.
Мое приложение было версии 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
Это потому, что вызываемый вами метод label
не является один из ActionView :: Helpers :: FormHelper
, но на самом деле это метод label_tag
из ActionView :: Helpers :: FormTagHelper
. Метод form_for
переписывает код в данном блоке, добавляя _tag
к используемым помощникам формы. Значит, вы не ищите в документации нужный метод!
Я еще не использовал этот метод, так как иногда метка для поля может отличаться от нескольких форм, использующих одну и ту же модель, поэтому я написал свой собственный помощник.