Рельсы: пользовательский текст для метки рельсов form_for

103

Я хочу отображать метку в form_for:

<div class="field">
  <%= f.label :name %><br />
  <%= f.text_field :name %>
</div>

Это создает ярлык «Имя», но я хочу, чтобы оно было «Ваше имя». Как я могу это изменить?

Пол С.
источник

Ответы:

186

Второй параметр labelhelper позволит вам установить собственный текст.

<%= f.label :name, 'Your Name' %>

Используйте документацию Ruby on Rails для поиска вспомогательных методов.

гилаз
источник
1
Спасибо! Не могли бы вы сообщить мне, как я могу найти что-то подобное в документации?
Пол С.
2
Просто перейдите по ссылке выше и введите метод, который вы ищете, в поле поиска. labelуказан под ActionView::Helpers::FormBuilderи ActionView::Helpers::FormHelper. ActionView::Helpers::FormBuilderэто тот, который нас интересует, но описания нет. Если вы посмотрите на объявление метода, вы увидите, что второй параметр равен text. В этом примере все не так просто. Но этот сайт документации обычно довольно хорош.
gylaz
34

Вы можете указать собственный текст метки через i18n. В config/locales/en.ymlи при условии, что ваша модель пользователя названа user, вы можете добавить следующее:

helpers:
    label:
      user:
        name: Your Name

Это позволит вам продолжать использовать

<%= f.label :name %>

без необходимости жесткого кодирования Your Name.

Для получения дополнительной информации о i18n см это . Документация на labelссылку на это .

hjing
источник
0

i18n с рельсами 5.2.2 работает отлично.

Переводите метки , заполнители и кнопки в формах разработки или других формах.

<%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
   <div class="mt-3">
     <label class="float-left"> <%= f.label t(:email) %> </label>
       <%= f.email_field :email, class: 'form-control', placeholder: t('.emailholder') %>
   </div>
   <div class="mt-3">
     <label class="float-left"> <%= f.label t(:password) %> </label>
       <%= f.password_field :password, class: 'form-control', placeholder: t('.passholder') %>
   </div>

   <div class="button">
     <%= f.button t('.signinbtn'), class: "" %>
   </div>
<% end %>

файл locals: config / locales / en.yml

en:
  activerecord:
    ....others

  #Found in Views/devise/seasions/new <form> <*label*>
  email: "Email"
  password: "Password"

  #Views/devise <form> <placeholder & buttom>
  devise: #if your using devise forms
    #seasions/new.html.erb
    new:
      emailholder: "enter email here"
      passholder: "enter password"
      signinbtn: "SignIn"

  ....others
Родни
источник