2012-03-09 8 views
7

Estoy trabajando en una aplicación de intranet simple hecha con Rails 3.1.Rails 3 cuadros desplegables de selección?

que tienen un modelo de enlaces que tiene los siguientes campos:

name:string 
url:string 
colour:string 

he puesto el color de atributos en una clase en la vista, así:

<a href="linkaddress" class="<%= link.colour %>">Link Name</a> 

En el momento en el nuevo formulario de enlace Solo tengo una entrada de formulario simple en la que el usuario puede escribir cualquier cosa y se convertirá en la clase href como se esperaba.

Lo que me gustaría hacer es crear una lista desplegable de opciones preestablecidas, estas opciones son simplemente rojas, verdes y azules (por ejemplo). Como esto parece bastante simple, no creo que haya necesidad de un ayudante.

He leído algunas otras preguntas y respuestas sobre SO y parecen mostrar ejemplos en los que aparece el nombre seguido de un número de identificación. Solo quiero tener el siguiente código:

<select name="colour"> 
<option value="red">Red</option> 
<option value="green">Green</option> 
<option value="blue">Blue</option> 
</select> 

Estoy seguro de que esto es simple, pero no puedo entenderlo. ¡He leído la información de la API de Rails y el select_for_tag me ha confundido!

Respuesta

13

sólo tiene que utilizar un elemento select de serie en su formulario para establecer la variable de color:

<%= f.select :colour, options_for_select([["Red", "red"], ["Green", "green"]], @link.colour) %> 
+0

Perfecto, justo lo que quería. ¡Gracias! – dannymcc

4

donde el color es el nombre de su modelo para sus colores y F es el objeto constructor de la forma:

<%= f.collection_select :colour, Colour.all, :url, :name %> 

Este sería el método más sencillo y directo para obtener un selecto con la URL del color que el valor y el nombre como el texto. Si desea tanto el nombre para el valor como el texto, puede cambiar: url a: name también.

Además, y para la semántica, probablemente también desee establecer una colección @colours en su controlador y usarla en lugar de llamar al modelo desde su vista (para reemplazar Colour.all).

ACTUALIZACIÓN: Basado en su comentario a continuación y si usted no tiene un modelo para la recogida y simplemente quiere codificar su selecto y los valores, intente:

<%= select :your_obj, :linkaddress, [["Red","red"],["Green", "green"],["Blue", "blue"]] %> 
+0

Eso es lo que me está confundiendo. No hay selecciones de color establecidas. Quiero codificarlos en el formulario. – dannymcc

+0

oh, está bien, actualizaré la respuesta. Lo siento, he entendido mal. – miked

3

Usted desea utilizar el ayudante de rieles, porque entonces los rieles se encargarán de mover los datos a su modelo. así que lo más probable es que quieras algo como lo siguiente.

<%= f.select :colour, ["red","green","blue"] %> 

This Page puede ser un poco prolijo, pero podría ayudar a cómo se está pensando en ella.