2012-04-24 37 views
11

Tengo una matriz de esta manera:carriles - desplegable de una matriz de cadenas

['New York', 'Los Angeles'] 

Y yo quiero ser capaz de generar un selecto/opción con esos valores en un formulario como el siguiente:

<%= form_tag filter_city_path, :method=> get do %> 
    <%= select_tag "city", @list_of_cities %> 
<% end %> 

Pero esto no está funcionando. Como puede ver, quiero pasar la selección como ciudad en la url.

Respuesta

15

Es necesario utilizar options_for_select ayuda semejante

<%= select_tag "city", options_for_select([['New York' ,'New york'], ['Los Angeles', 'Los Angeles']]) %> 
+7

Siempre que sea posible, intente transformar mediante programación sus matrices en lugar de deletrearlas a mano. Has ilustrado por qué cuando no capitalizas 'york' en la segunda instancia. 'cities.collect {| c | [c, c]} 'haría el trabajo de expandirlo. – tadman

0

Parece que su matriz no tiene suficiente argumento. Por favor, consulte this guide.

Las opciones típicamente necesita ser formateada de esta manera:

[['Lisbon', 1], ['Madrid', 2], ...] 

tomar nota del valor 1, 2, etc.

0

Mi método para esto es construir la matriz como una constante en el modelo, forzar la confirmación de las opciones enumeradas en la constante y llamarla desde la vista

class Show < ApplicationRecord 

    DAYS = [ "monday", "tuesday", "wednesday", "thursday","friday", "saturday","sunday"] 

    validates :day, inclusion: DAYS 

end 

Si desea que la opción de dicho campo para ser presentada sin contenido que tendrá que llamar `allow_blank: true' en la validación también. Una vez que se haya creado puede llamar a la constante de poblar la vista en la forma como así:

<%= select_tag "day", options_for_select(Show::DAYS) %> 

o

<%= select_tag "day", options_for_select(Show::DAYS.sort) %> 

si lo quieres clasificado previamente (que no tiene sentido con los días de la semana ...)

Cuestiones relacionadas