Пользовательский текст для рельсов form_for label

Я хочу показать метку в form_for:

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

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

Ответ 1

Второй параметр для label помощника позволит вам установить настраиваемый текст.

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

Используйте Ruby on Rails Documentation, чтобы найти вспомогательные методы.

Ответ 2

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

helpers:
    label:
      user:
        name: Your Name

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

<%= f.label :name %>

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

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

Ответ 3

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

Ответ 4

На Rails 5.1.0 принятый ответ выше не работает.

Первый переданный параметр может использоваться как настраиваемая метка.

"<% = f.label: mobile," № мобильного телефона: "%>"