Teks kustom untuk rel form_for label


102

Saya ingin menampilkan label di form_for:

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

Ini menghasilkan label "Nama", tapi saya ingin itu menjadi "Nama Anda". Bagaimana cara mengubahnya?

Jawaban:


185

Parameter kedua untuk labelhelper akan memungkinkan Anda menyetel teks kustom.

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

Gunakan Dokumentasi Ruby on Rails untuk mencari metode pembantu.


1
Terima kasih! Bisakah Anda memberi tahu saya bagaimana saya bisa mencari sesuatu seperti ini di dokumentasi?
Paul S.

2
Cukup buka tautan di atas dan ketik metode yang Anda cari di kotak pencarian. labelterdaftar di bawah ActionView::Helpers::FormBuilderdan ActionView::Helpers::FormHelper. ActionView::Helpers::FormBuilderadalah salah satu yang kami minati, tetapi tidak ada deskripsi. Jika Anda melihat deklarasi metode, Anda dapat melihat bahwa parameter kedua adalah text. Dalam contoh ini, ini tidak terlalu mudah. Tetapi situs dokumentasi itu biasanya cukup bagus.
gylaz

34

Anda dapat menentukan teks label kustom melalui i18n. Dalam config/locales/en.yml, dan dengan asumsi model pengguna Anda diberi nama user, Anda dapat menambahkan yang berikut ini:

helpers:
    label:
      user:
        name: Your Name

Ini akan memungkinkan Anda untuk terus menggunakan

<%= f.label :name %>

tanpa harus hardcode Your Name.

Untuk informasi lebih lanjut tentang i18n, lihat ini . Dokumentasi di labellihat ini .


0

i18n dengan rel 5.2.2 ini bekerja dengan sempurna.

Terjemahkan label , placeholder , dan tombol pada formulir rancangan atau formulir lainnya.

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

file lokal: 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

Di Rails 5.1.0, jawaban yang diterima di atas tidak berfungsi.

Parameter pertama yang lolos dapat digunakan sebagai label yang disesuaikan.

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

Bisakah Anda menjelaskan sedikit lebih lanjut, tolong @NemyaNation? Contoh Anda terlihat persis sama dengan jawaban yang diterima.
SRack

Saya tidak ingat persis @SRack, tetapi saya ingat saya mencoba membuat label menggunakan kutipan tunggal dan itu tidak berhasil untuk saya 'Mobile No:'. Jadi dengan mengubah ke kutipan ganda, "Mobile No:"itu memecahkan masalah saya. Ini mungkin terjadi karena tidak ada tag di sisa file. Saya tidak yakin, tetapi saya ingat itulah yang berhasil bagi saya saat itu.
NemyaNation

4
Terima kasih atas balasannya @NemyaNation. Kedengarannya seperti itu mungkin menjadi masalah khusus dalam kasus Anda, atau mungkin berkaitan dengan interpolasi / format template. Ruby / Rails tidak akan membedakan antara tanda kutip tunggal dan ganda contoh ini dalam .html.erbfile biasa :)
SRack
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.