Văn bản tùy chỉnh cho đường ray form_cho nhãn


101

Tôi muốn hiển thị một nhãn trong form_for:

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

Điều này tạo ra nhãn "Tên", nhưng tôi muốn nó là "Tên của bạn". Tôi có thể thay đổi nó bằng cách nào?

Câu trả lời:


184

Tham số thứ hai để labeltrợ giúp sẽ cho phép bạn đặt văn bản tùy chỉnh.

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

Sử dụng Tài liệu Ruby on Rails để tra cứu các phương thức trợ giúp.


1
Cảm ơn bạn! Bạn có thể vui lòng cho tôi biết làm thế nào tôi có thể tra cứu những thứ như thế này trong tài liệu không?
Paul S.

2
Chỉ cần truy cập liên kết trên và nhập phương pháp bạn đang tìm kiếm vào hộp tìm kiếm. labelđược liệt kê dưới ActionView::Helpers::FormBuilderActionView::Helpers::FormHelper. ActionView::Helpers::FormBuilderlà một trong những chúng tôi quan tâm, nhưng không có mô tả. Nếu bạn nhìn vào phần khai báo phương thức, bạn có thể thấy tham số thứ hai là text. Trong ví dụ này, nó không thẳng về phía trước. Nhưng trang web tài liệu đó thường khá tốt.
gylaz

34

Bạn có thể chỉ định văn bản nhãn tùy chỉnh thông qua i18n. Trong config/locales/en.ymlvà giả sử mô hình người dùng của bạn được đặt tên user, bạn có thể thêm như sau:

helpers:
    label:
      user:
        name: Your Name

Điều này sẽ cho phép bạn tiếp tục sử dụng

<%= f.label :name %>

mà không cần phải mã hóa cứng Your Name.

Để biết thêm thông tin về i18n, hãy xem phần này . Tài liệu về việc labeltham khảo này .


0

i18n với đường ray 5.2.2 này hoạt động hoàn hảo.

Dịch nhãn , trình giữ chỗnút trên các biểu mẫu phát minh ra hoặc các biểu mẫu khác.

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

tệp 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

-2

Trên Rails 5.1.0, câu trả lời được chấp nhận ở trên không hoạt động.

Tham số đầu tiên được truyền vào có thể được sử dụng làm nhãn tùy chỉnh.

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

Bạn @NemyaNation có thể giải thích thêm một chút được không? Ví dụ của bạn trông giống hệt như câu trả lời được chấp nhận.
SRack

Tôi không thể nhớ chính xác @SRack, nhưng tôi nhớ rằng tôi đã cố gắng tạo nhãn bằng cách sử dụng các trích dẫn duy nhất và điều đó không hiệu quả với tôi 'Mobile No:'. Vì vậy, bằng cách thay đổi thành dấu ngoặc kép "Mobile No:"nó đã giải quyết được vấn đề của tôi. Điều này có thể là do thiếu thẻ trong phần còn lại của tệp. Tôi không chắc nhưng tôi nhớ đó là những gì đã làm việc cho tôi vào thời điểm đó.
NemyaNation

4
Cảm ơn vì đã trả lời @NemyaNation. Điều đó có vẻ như nó có thể là một vấn đề cụ thể trong trường hợp của bạn, hoặc có thể liên quan đến phép nội suy / định dạng mẫu. Ruby / Rails sẽ không phân biệt giữa dấu nháy đơn và đôi ví dụ này trong một thường xuyên .html.erbtập tin :)
SRack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.