2011-05-31 28 views
5

Me preguntaba cómo funcionan las casillas de verificación en Rails? ¿Cuál sería la tabla dentro de la base de datos (entero, cadena, etc.)? ¿Cómo asignarías 3 valores diferentes a las casillas de verificación y el usuario solo puede elegir 1 (color favorito: rojo, verde o azul)?¿Cómo funcionan las casillas de verificación en Rails?

Soy nuevo en los rieles y me ayudaría tener una explicación de principio a fin, ya que veo muchos ejemplos pero no explican todo desde el principio.

Gracias.

Respuesta

4

Hay una distinción entre las casillas de verificación y la base de datos. Las casillas de verificación son HTML. La base de datos está conectada a sus Modelos, y no tiene nada que ver con las casillas de verificación.

Cuando utiliza una casilla de verificación en su vista de HTML, su formulario enviará algunos parámetros. Por defecto, este parámetro tendrá el valor "1" (como Cadena). Los ayudantes de raíles también crean una entrada oculta adicional, que envía el valor "0" con el mismo nombre que la entrada de casilla de verificación. Análisis de los parámetros Rails selecciona el primer valor, por lo que al parámetro dado se le asigna un valor "1" si se ha marcado la casilla de verificación, y el valor "0" si no lo ha hecho.

Ahora, el valor guardado en la base de datos depende del tipo del atributo en su modelo. Si definió un campo dado como booleano, se almacenará como booleano (hay algo de magia, ya que la cadena "0" no se considera "falsa" en ruby), si define el atributo como entero, entonces tendrá el valor 1 o 0, y si es un String, tendrá "1" o "0".

Acerca de estos 3 valores para la casilla de verificación, usaría un <select> o un botón de opción.

Red: <input type="radio" name="colour" value="red" checked="checked"/> 
Green: <input type="radio" name="colour" value="green" /> 
Blue: <input type="radio" name="colour" value="blue" /> 

Véase el método ActionView::Helpers::FormHelper#radio_button.

+1

Esto es efectivamente lo mismo que mi respuesta, ¿o quizás debería decirme lo mismo? :) –

+1

@Ryan: Fui el primero que comenzó a escribir la respuesta, simplemente escribo más despacio. Solo pensamos las mismas cosas ;-) – Arsen7

+3

@ Arsen7: Ni siquiera sé por qué nos estamos escribiendo comentarios el uno al otro. Deberíamos ser capaces de comunicarnos a través de nuestra mente compartida. –

Cuestiones relacionadas