Szyny: niestandardowy tekst dla szyn form_for etykiety

103

Chcę wyświetlić etykietę w form_for:

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

Spowoduje to wygenerowanie etykiety „Imię”, ale chcę, aby było to „Twoje imię”. Jak mogę to zmienić?

Paul S.
źródło

Odpowiedzi:

186

Drugi parametr labelpomocnika pozwoli Ci ustawić własny tekst.

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

Użyj Ruby on Rails Documentation, aby wyszukać metody pomocnicze.

gylaz
źródło
1
Dziękuję Ci! Czy mógłbyś dać mi znać, jak mogę znaleźć coś takiego w dokumentacji?
Paul S.
2
Po prostu przejdź do powyższego linku i wpisz szukaną metodę w polu wyszukiwania. labeljest wymieniony pod ActionView::Helpers::FormBuilderi ActionView::Helpers::FormHelper. ActionView::Helpers::FormBuilderto ten, który nas interesuje, ale nie ma opisu. Jeśli spojrzysz na deklarację metody, zobaczysz, że drugi parametr to text. W tym przykładzie nie jest to bardzo proste. Ale ta strona z dokumentacją jest zwykle całkiem dobra.
gylaz
34

Możesz określić własny tekst etykiety za pośrednictwem i18n. W programie config/locales/en.ymli zakładając, że model użytkownika nosi nazwę user, możesz dodać następujące elementy:

helpers:
    label:
      user:
        name: Your Name

To pozwoli ci dalej używać

<%= f.label :name %>

bez konieczności kodowania Your Name.

Aby uzyskać więcej informacji na temat i18n, zobacz to . Dokumentacja na ten temat labelodnosi się do tego .

hjing
źródło
0

i18n z szynami 5.2.2 działa to doskonale.

Przekłada etykiety , zastępczych i przycisków na opracować formularze lub inne formy.

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

plik 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
RodneyH
źródło