Tengo un array de cadenas de caracteres, llamados @theModels, en una rutina implementado como parte de un Sinatra servidor. Estos modelos son opciones para que el usuario seleccione, y que se obtienen por la parte de atrás (la idea de ser, como los nuevos modelos se añaden, a continuación, el extremo delantero de código no debe cambiar).

Estoy usando haml para representar html.

¿Cómo puedo enumerar cada elemento en la lista de @theModels de tal manera que cada elemento es una casilla de verificación? Y ¿cómo puedo obtener casillas de verificación que el usuario ha seleccionado?

Veo que acaba de poner

= @theModels

me dará la lista de cadenas contenidas en @theModels, pero sin espacios o similares, y ciertamente no en las casillas de verificación. He encontrado esta pregunta que parece ser similar, pero mi haml-fu no es suficiente para convertirlo en lo que necesito.

ACTUALIZACIÓN:

Estas son las opciones asociadas con la carga de un archivo, de tal manera que ahora el código es:

%form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"}
- @theModelHash.each do |key,value|
  %br
  %input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value}
  =key
  %input{:type=>"file",:name=>"file"}
  %input{:type=>"submit",:value=>"Upload"}

Problema es, que pone la carga de un archivo de botón en cada opción, en lugar de al final. Sólo quiero un botón de enviar en la final; debo tener dos formas de que tanto el informe de sus resultados cuando el botón ‘Subir’ se presiona?

UPDATE2:

Después de un momento de reflexión, lo anterior puede ser modificado a:

Gracias!

%form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"}
- @theModelHash.each do |key,value|
  %br
  %input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value}
  =key


%form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"}
  %input{:type=>"file",:name=>"file"}
  %input{:type=>"submit",:value=>"Upload"}

Y que parece hacer lo que quiero.

InformationsquelleAutor mmr | 2010-01-24

2 Comentarios

  1. 3

    Creo que se debe enviar el contenido como un hash en su lugar.
    Esto le dará la oportunidad de establecer los valores iniciales en el formulario.

    El hash @params le dará el resultado.

    E. g. {«naranjas»=>»1»}

    #app.haml 
    
    %forma{:método => 'post', :action => "/"} 
    - @modelos.hacer cada uno |key,value| 
    %br 
    %de entrada{:type=>"casilla de verificación", :nombre=>"#{clave}", :valor=>1, :checked=>valor} 
    =clave 
    %de entrada{:type => :que presente :valor => "Guardar"} 
    
    #app.rb 
    
    requieren de un 'sinatra' 
    requieren de un 'haml' 
    
    get'/' ¿ 
    @modelos = {"naranjas" => true, "bananas" => false} 
    haml :app 
    final 
    
    post'/' ¿ 
    @params.inspeccionar 
    final 
    
    
    • Uh, muy cerca! Yo no creo que sería cuestión en la pregunta original, pero estas son las opciones de un archivo que el usuario suba al mismo tiempo. ver a mis actualizado pregunta, no tengo suficiente espacio aquí para el resto del esquema de
    • No creo que esta segunda especificación es muy cerca de a la original. Me resulta frustrante cuando usted cambia completamente el problema después de que me he dado la respuesta original. Ir y probar oDesk.com
    • Así, utilizando su respuesta, yo era capaz de conseguir trabajo, por lo que es, de hecho, «muy cerca». Gracias por tu ayuda, lo siento te molestaba.
    • He malinterpretado su segunda versión. Pensé que el archivo debe contener las alternativas. Lo siento por mi reacción. Se puede hacer sin la segunda forma, por undenting el botón «archivo» así que no es parte del bucle.
  2. 0

    El enlace que siempre vinculado a un rieles de la solución, donde tiene una función que devuelve el html adecuado.

    Puede definir esta función usted mismo:

    De entrada: tecla, valor 
    
    Salida: %de entrada{:type=>"casilla de verificación", :nombre=>"#{clave}", :valor=>1, :checked=>valor} 
    
    def check_box(clave, valor) 
    
    ... 
    
    final 
    
    y se llama en haml con 
    
    =check_box(clave,valor) 
    

Dejar respuesta

Please enter your comment!
Please enter your name here