2009-08-09 9 views
7

He aquí un extracto de una forma rieles bastante estándar:hacer que los campos de entrada de texto y sus etiquetas se alinean correctamente

<p> 
    <%= f.label :from_station %> <%= f.text_field :from_station %> 
    </p> 
    <p> 
    <%= f.label :to_station %> <%= f.text_field :to_station %> 
    </p> 

Por defecto, ello convierte así:

alt text http://img412.imageshack.us/img412/127/picture6u.png

Esto no tiene' se ven muy bien ya que los campos de texto no se alinean. ¿Cuál es la manera más fácil de hacer que el formulario se vea más como esto:

alt text http://img193.imageshack.us/img193/746/picture7shk.png

He tratado de establecer la propiedad width estilo de los <label> s, pero no parece que esta propiedad para hacer cualquier cosa.

+0

He encontrado que no coloca cada campo en su propia fila, es decir, tiene desde y horizontalmente uno al lado del otro. – ProfK

Respuesta

14

creo que esto es más una cuestión de CSS;

Las etiquetas de forma predeterminada no son un elemento de nivel de bloque y, por lo tanto, no aceptarán un ancho. Intente configurar este CSS:

label{ 
    width: 4em; 
    float: left; 
    text-align: right; 
    margin-right: 0.5em; 
    display: block 
} 

Espero que ayude!

+0

Me pregunto si esta solución funcionará en navegadores más antiguos (como IE6, por nombrar uno). Creo que la solución de tabla es más confiable ... –

+1

Sí, lo hará, y funciona mejor también para lectores de pantalla y navegadores de solo texto. Y los motores de búsqueda :) –

+0

¡el flotador hace el truco! – markus

1

Se puede utilizar un <table> que cada etiqueta se encuentra en la columna 1 y cada campo de texto está en la columna 2.

Cuestiones relacionadas