2010-07-15 4 views
120

¿Cómo puedo agregar el texto placeholder a mis campos f.text_field para que el texto sea pre-escrito de manera predeterminada, y cuando un usuario hace clic dentro de los campos, el texto desaparece, lo que permite al usuario escribir el nuevo texto?Ruby on Rails: ¿Cómo agrego texto de marcador de posición a f.text_field?

+3

Sugiero agregar la respuesta de nslocum en lugar de la mía. La suya es correcta para Rails 3. –

+0

HTML5 Admite esto. Mientras tanto, hay [javascript solutions] (http://www.htmlcenter.com/blog/form-input-placeholder-text/). – ghoppe

Respuesta

240

Con rieles> = 3.0, sólo tiene que utilizar la opción placeholder .

f.text_field :attr, placeholder: "placeholder text" 
+4

El atributo "marcador de posición" solo es compatible con navegadores compatibles con HTML5, dejando de lado navegadores como Internet Explorer. –

+1

La URL correcta para la corrección jQuery es http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html – szeryf

+0

¿Cómo funcionaría esto para Rails 2? – KDP

0

En su plantilla de vista, establecer un valor predeterminado:

f.text_field :password, :value => "password" 

En su Javascript (jQuery asumiendo aquí):

$(document).ready(function() { 
    //add a handler to remove the text 
}); 
+1

El campo de búsqueda de Huffington Post usa este bit de JS dentro del elemento de entrada: 'onfocus =" if (this.value == 'Buscar The Huffington Post') this.value = '' "value =" Buscar The Huffington Post "' Parece un buen enfoque. – Nathan

28

en los largueros 4 (Usando HAML):

=f.text_field :first_name, class: 'form-control', autofocus: true, placeholder: 'First Name' 
1

Aquí es una sintaxis mucho más limpio si se utiliza rails 4+

<%= f.text_field :attr, placeholder: "placeholder text" %> 

Así rails 4+ ahora se puede utilizar esta sintaxis en lugar de la sintaxis de hash

+1

¿En qué se diferencia de la respuesta @nslocum aceptada? – mlt

11

Para aquellos que usan Rails (4.2) Internacionalización (I18n):

establecer el atributo de marcador de posición true:

f.text_field :attr, placeholder: true 

y en su archivo local (es decir. en.yml):

en: 
    helpers: 
    placeholder: 
     model_name: 
     attr: "some placeholder text" 
+0

Gracias que funcionó. No configuré el 'placeholder: true'. Después de configurar eso como lo describió, funcionó. – Hendrik