Testo personalizzato per i binari form_for label


101

Voglio visualizzare un'etichetta in form_for:

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

Questo genera l'etichetta "Nome", ma voglio che sia "Il tuo nome". Come posso cambiarlo?

Risposte:


184

Il secondo parametro labeldell'helper ti consentirà di impostare il testo personalizzato.

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

Usa la documentazione di Ruby on Rails per cercare metodi di supporto.


1
Grazie! Potresti farmi sapere come posso cercare qualcosa di simile nella documentazione?
Paul S.

2
Vai al collegamento sopra e digita il metodo che stai cercando nella casella di ricerca. labelè elencato sotto ActionView::Helpers::FormBuildere ActionView::Helpers::FormHelper. ActionView::Helpers::FormBuilderè quello che ci interessa, ma non esiste una descrizione. Se guardi la dichiarazione del metodo, puoi vedere che il secondo parametro è text. In questo esempio, non è molto semplice. Ma quel sito di documentazione di solito è abbastanza buono.
gylaz

34

È possibile specificare il testo dell'etichetta personalizzata tramite i18n. In config/locales/en.ymle supponendo che il tuo modello utente sia denominato user, puoi aggiungere quanto segue:

helpers:
    label:
      user:
        name: Your Name

Ciò ti consentirà di continuare a utilizzare

<%= f.label :name %>

senza dover codificare Your Name.

Per ulteriori informazioni su i18n, vedere questo . Documentazione sul labelfare riferimento a questo .


0

i18n con binari 5.2.2 funziona perfettamente.

Traduci etichette , segnaposto e pulsanti su moduli di elaborazione o altri moduli.

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

file 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

-2

Su Rails 5.1.0, la risposta accettata sopra non funziona.

Il primo parametro passato può essere utilizzato come etichetta personalizzata.

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

Potresti spiegare un po 'di più per favore @NemyaNation? Il tuo esempio sembra esattamente lo stesso della risposta accettata.
SRack

Non ricordo esattamente @SRack, ma ricordo che ho provato a creare un'etichetta usando le virgolette singole e non ha funzionato per me 'Mobile No:'. Quindi passando alle virgolette doppie "Mobile No:"ha risolto il mio problema. Ciò potrebbe essere dovuto a tag mancanti nel resto del file. Non ne sono sicuro, ma ricordo che è quello che ha funzionato per me in quel momento.
NemyaNation

4
Grazie per la risposta @NemyaNation. Sembra che potrebbe essere stato un problema specifico nel tuo caso, o forse a che fare con l'interpolazione / il formato del modello. Ruby / Rails non distingue tra virgolette singole e doppie in questo esempio in un .html.erbfile normale :)
SRack
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.