Texte personnalisé pour les rails form_for label

102

Je souhaite afficher une étiquette dans form_for:

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

Cela génère le libellé "Nom", mais je veux que ce soit "Votre nom". Comment puis-je le changer?

Paul S.
la source

Réponses:

185

Le deuxième paramètre à labelhelper vous permettra de définir un texte personnalisé.

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

Utilisez la documentation Ruby on Rails pour rechercher des méthodes d'assistance.

gylaz
la source
1
Je vous remercie! Pourriez-vous s'il vous plaît me faire savoir comment je peux rechercher quelque chose comme ça dans la documentation?
Paul S.
2
Allez simplement sur le lien ci-dessus et tapez la méthode que vous recherchez dans la zone de recherche. labelest répertorié sous ActionView::Helpers::FormBuilderet ActionView::Helpers::FormHelper. ActionView::Helpers::FormBuilderest celui qui nous intéresse, mais il n'y a pas de description. Si vous regardez la déclaration de méthode, vous pouvez voir que le deuxième paramètre est text. Dans cet exemple, ce n'est pas très simple. Mais ce site de documentation est généralement assez bon.
gylaz
34

Vous pouvez spécifier un texte d'étiquette personnalisé via i18n. Dans config/locales/en.yml, et en supposant que votre modèle utilisateur est nommé user, vous pouvez ajouter les éléments suivants:

helpers:
    label:
      user:
        name: Your Name

Cela vous permettra de continuer à utiliser

<%= f.label :name %>

sans avoir à coder en dur Your Name .

Pour plus d'informations sur i18n, consultez ceci . Documentation labelà ce sujet .

hjing
la source
0

i18n avec rails 5.2.2 cela fonctionne parfaitement.

Traduisez les étiquettes , les espaces réservés et les boutons sur les formulaires de conception ou d'autres formulaires.

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

fichier local: 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
la source
-2

Sur Rails 5.1.0, la réponse acceptée ci-dessus ne fonctionne pas.

Le premier paramètre passé peut être utilisé comme étiquette personnalisée.

<%= f.label :mobile, "Mobile No:" %>
NemyaNation
la source
Pourriez-vous expliquer un peu plus s'il vous plaît @NemyaNation? Votre exemple ressemble exactement à la réponse acceptée.
SRack
Je ne me souviens pas exactement de @SRack, mais je me souviens que j'ai essayé de créer une étiquette en utilisant les citations simples et cela n'a pas fonctionné pour moi 'Mobile No:'. Donc, en changeant en guillemets doubles, "Mobile No:"cela a résolu mon problème. Cela pourrait être dû à des balises manquantes dans le reste du fichier. Je ne suis pas sûr mais je me souviens que c'est ce qui a fonctionné pour moi à l'époque.
NemyaNation
4
Merci pour la réponse @NemyaNation. Cela semble avoir été un problème spécifiquement dans votre cas, ou peut-être lié à l'interpolation / au format du modèle. Ruby / Rails ne ferait pas la différence entre les guillemets simples et doubles dans cet exemple dans un .html.erbfichier régulier :)
SRack