2012-10-02 44 views
12

¿Cuál es la manera más rápida y más elegante de marcar el valor de la opción seleccionada actualmente en el formulario en HAML?Forma de rieles (seleccionar/opción): cómo marcar la opción seleccionada con HAML?

%form{:action => '', :method => 'get'} 
    %select{:name => 'param_name'} 
     %option{:value => 'A'} A data 
     %option{:value => 'B'} B data 

Una manera:

- if params[:param_name] == "A" 
    %option{:value => 'A', :selected => 'selected'} A data 
- else 
    %option{:value => 'A'} A data 

pero esto no es apropiado cuando la voluntad select caja tiene muchos campos de opciones ...

Respuesta

16

Algo como esto va a funcionar (con el mayor "sintaxis hashrocket" con el operador =>)

%select 
    %option{:value => "a", :selected => params[:x] == "a"}= "a" 
    %option{:value => "b", :selected => params[:x] == "b"}= "b" 

O, en nuevos Rubí versiones (1.9 y posteriores):

%select 
    %option{value: "a", selected: params[:x] == "a"}= "a" 
    %option{value: "b", selected: params[:x] == "b"}= "b" 
+1

lo que hace el seleccionadas: params [: X] ¿? – jpganz18

+0

el valor seleccionado por defecto. el valor para seleccionado puede ser verdadero o falso (que evalúa ===) – msanjay

13

Debe liberar la potencia de los raíles auxiliares.

For select tag:

= select_tag :param_name, options_for_select([['A data', 'A'], ['B data', 'B']], params[:param_name]) 

Además, en lugar de prima %form uso form_tag o mejor form_for cuando es posible (o más mejor simple_form o Formtastic)

+0

Esta respuesta es, sin duda, preferible a la escritura de marcado de formulario sin formato en vistas, si puede usar los ayudantes de formulario. –

+1

me encantaría que la respuesta fuera más agradable si tuviera un ejemplo de envoltura en un 'form_tag' o' form_for', la sintaxis de HAML es bastante molesta con su sangría –

Cuestiones relacionadas