I want to display a label in form_for
:
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
This generates the label "Name", but I want it to be "Your Name". How can I change it?
The second parameter to label
helper will allow you to set custom text.
<%= f.label :name, 'Your Name' %>
Use Ruby on Rails Documentation to look up helper methods.
You can specify custom label text via i18n. In config/locales/en.yml
, and assuming your user model is named user
, you can add the following:
helpers:
label:
user:
name: Your Name
This will allow you to keep using
<%= f.label :name %>
without having to hardcode Your Name
.
For more information about i18n, see this. Documentation on the label
refer to this.
i18n with rails 5.2.2 this works perfectly.
Translate labels, placeholders, and buttons on devise forms or other forms.
<%= 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 %>
locals file: 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
On Rails 5.1.0 , the accepted answer above does not work.
The first parameter passed can be used as a customized label.
<%= f.label :mobile, "Mobile No:" %>
来源:https://stackoverflow.com/questions/13003626/custom-text-for-rails-form-for-label