Benutzerdefinierter Text für Schienen form_for label

101

Ich möchte ein Etikett anzeigen in form_for:

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

Dies erzeugt die Bezeichnung "Name", aber ich möchte, dass es "Ihr Name" ist. Wie kann ich das ändern?

Paul S.
quelle

Antworten:

184

Mit dem zweiten labelHilfsparameter können Sie benutzerdefinierten Text festlegen.

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

Verwenden Sie die Ruby on Rails-Dokumentation , um nach Hilfsmethoden zu suchen.

Gylaz
quelle
1
Danke dir! Könnten Sie mir bitte mitteilen, wie ich so etwas in der Dokumentation nachschlagen kann?
Paul S.
2
Gehen Sie einfach auf den obigen Link und geben Sie die gesuchte Methode in das Suchfeld ein. labelist unter ActionView::Helpers::FormBuilderund aufgeführt ActionView::Helpers::FormHelper. ActionView::Helpers::FormBuilderist die, die uns interessiert, aber es gibt keine Beschreibung. Wenn Sie sich die Methodendeklaration ansehen, sehen Sie, dass der zweite Parameter ist text. In diesem Beispiel ist es nicht sehr einfach. Aber diese Dokumentationsseite ist normalerweise ziemlich gut.
Gylaz
34

Sie können benutzerdefinierten Beschriftungstext über i18n angeben. In config/locales/en.ymlund unter der Annahme, dass Ihr Benutzermodell benannt istuser , können Sie Folgendes hinzufügen:

helpers:
    label:
      user:
        name: Your Name

Auf diese Weise können Sie die Verwendung fortsetzen

<%= f.label :name %>

ohne fest codieren zu müssen Your Name.

Weitere Informationen zu i18n finden Sie hier . Dokumentation auf die labelbeziehen sich auf diese .

hjing
quelle
0

i18n mit Schienen 5.2.2 funktioniert das einwandfrei.

Übersetzen Etiketten , Platzhalter und Tasten auf devise Formen oder andere Formen.

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

lokale Datei: 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
quelle
-2

Auf Rails 5.1.0 funktioniert die oben akzeptierte Antwort nicht.

Der erste übergebene Parameter kann als benutzerdefiniertes Etikett verwendet werden.

<%= f.label :mobile, "Mobile No:" %>
NemyaNation
quelle
Könnten Sie bitte etwas mehr @NemyaNation erklären? Ihr Beispiel sieht genauso aus wie die akzeptierte Antwort.
SRack
Ich kann mich nicht genau an @SRack erinnern, aber ich erinnere mich, dass ich versucht habe, ein Etikett mit den einfachen Anführungszeichen zu erstellen, und das hat bei mir nicht funktioniert 'Mobile No:'. Durch den Wechsel zu doppelten Anführungszeichen wurde "Mobile No:"mein Problem gelöst. Dies könnte an fehlenden Tags im Rest der Datei liegen. Ich bin mir nicht sicher, aber ich erinnere mich, dass es damals für mich funktioniert hat.
NemyaNation
4
Danke für die Antwort @NemyaNation. Das klingt so, als wäre es speziell in Ihrem Fall ein Problem gewesen oder hätte mit der Interpolation / dem Vorlagenformat zu tun. Ruby / Rails würde dieses Beispiel in einer regulären .html.erbDatei nicht zwischen einfachen und doppelten Anführungszeichen unterscheiden :)
SRack