Спеціальний текст для рейок form_for label


102

Я хочу показати мітку в form_for:

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

Це породжує мітку "Ім'я", але я хочу, щоб це було "Ваше ім'я". Як я можу це змінити?

Відповіді:


185

Другий параметр для labelпомічника дозволить вам встановити власний текст.

<%= 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посилається на це .


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 %>

файл місцевих жителів: 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

-2

На Rails 5.1.0 прийнята відповідь вище не працює.

Перший переданий параметр може використовуватися як спеціальна мітка.

<%= f.label :mobile, "Mobile No:" %>

Чи можете ви пояснити трохи більше, будь ласка, @NemyaNation? Ваш приклад виглядає точно так само, як прийнята відповідь.
SRack

Я не можу точно згадати @SRack, але пам'ятаю, що я намагався створити мітку за допомогою єдиних цитат, і це не спрацювало для мене 'Mobile No:'. Тож змінивши на подвійні цитати, "Mobile No:"це вирішило мою проблему. Це могло бути пов’язано з відсутніми тегами в решті файлу. Я не впевнений, але я пам’ятаю, що це працювало для мене в той час.
NemyaNation

4
Дякуємо за відповідь @NemyaNation. Це здається, що це могло бути проблемою конкретно у вашому випадку, або, можливо, пов’язаною з інтерполяцією / форматом шаблону. Ruby / Rails не розмежовували цей приклад у звичайному .html.erbфайлі :)
SRack
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.