问题
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?
回答1:
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.
回答2:
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.
回答3:
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
回答4:
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