rails form_for标签的自定义文本

问题描述 投票:88回答:4

我想在form_for中显示一个标签:

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

这会生成标签“Name”,但我希望它是“你的名字”。我该怎么改变它?

ruby-on-rails ruby ruby-on-rails-3.2 form-for
4个回答
172
投票

label助手的第二个参数将允许您设置自定义文本。

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

使用Ruby on Rails Documentation查找辅助方法。


31
投票

您可以通过i18n指定自定义标签文本。在config/locales/en.yml中,假设您的用户模型名为user,您可以添加以下内容:

helpers:
    label:
      user:
        name: Your Name

这将允许您继续使用

<%= f.label :name %>

无需硬编码Your Name

有关i18n的更多信息,请参阅this。关于label的文档是指this


0
投票

i18n with rails 5.2.2 this works perfectly.

在设计表格或其他表格上翻译标签,占位符和按钮。

<%= 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文件: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
投票

在Rails 5.1.0上,上面接受的答案不起作用。

传递的第一个参数可以用作自定义标签。

<%= f.label :mobile, "Mobile No:" %>
© www.soinside.com 2019 - 2024. All rights reserved.