Texto personalizado para rieles form_for label

101

Quiero mostrar una etiqueta en form_for:

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

Esto genera la etiqueta "Nombre", pero quiero que sea "Tu nombre". ¿Cómo puedo cambiarlo?

Paul S.
fuente

Respuestas:

184

El segundo parámetro de labelayuda le permitirá configurar texto personalizado.

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

Utilice la documentación de Ruby on Rails para buscar métodos de ayuda.

Gylaz
fuente
1
¡Gracias! ¿Podría decirme cómo puedo buscar algo como esto en la documentación?
Paul S.
2
Simplemente vaya al enlace anterior y escriba el método que está buscando en el cuadro de búsqueda. labelaparece bajo ActionView::Helpers::FormBuildery ActionView::Helpers::FormHelper. ActionView::Helpers::FormBuilderes el que nos interesa, pero no hay descripción. Si observa la declaración del método, puede ver que el segundo parámetro es text. En este ejemplo, no es muy sencillo. Pero ese sitio de documentación suele ser bastante bueno.
gylaz
34

Puede especificar texto de etiqueta personalizado a través de i18n. En config/locales/en.yml, y asumiendo que se nombra su modelo de usuario user, puede agregar lo siguiente:

helpers:
    label:
      user:
        name: Your Name

Esto te permitirá seguir usando

<%= f.label :name %>

sin tener que codificar Your Name.

Para obtener más información sobre i18n, consulte esto . La documentación al respecto se labelrefiere a esto .

hjing
fuente
0

i18n con rieles 5.2.2 esto funciona perfectamente.

Traduzca etiquetas , marcadores de posición y botones en formularios de dispositivos u otros formularios.

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

archivo 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
RodneyH
fuente
-2

En Rails 5.1.0, la respuesta aceptada anterior no funciona.

El primer parámetro pasado se puede utilizar como una etiqueta personalizada.

<%= f.label :mobile, "Mobile No:" %>
NemyaNation
fuente
¿Podrías explicar un poco más por favor @NemyaNation? Su ejemplo se ve exactamente igual que la respuesta aceptada.
SRack
No recuerdo exactamente @SRack, pero recuerdo que intenté crear una etiqueta usando las citas simples y eso no funcionó para mí 'Mobile No:'. Entonces, al cambiar a comillas dobles "Mobile No:", resolvió mi problema. Esto podría deberse a que faltan etiquetas en el resto del archivo. No estoy seguro, pero recuerdo que fue lo que funcionó para mí en ese momento.
NemyaNation
4
Gracias por la respuesta @NemyaNation. Parece que podría haber sido un problema específicamente en su caso, o tal vez tenga que ver con la interpolación / el formato de la plantilla. Ruby / Rails no diferenciaría entre comillas simples y dobles en este ejemplo en un .html.erbarchivo normal :)
SRack