2010-06-15 16 views
1

Je cours Sinatra 1.0 avec HAML, mon formulaire a un certain nombre de cases à cocher, par exemple les livres que j'aime, et vous devez sélectionner tous les livres que vous voulez. Le nom de la case à cocher est "livres". Dans sinatra params ['books'], il devrait y avoir un tableau de tous les livres qui ont été vérifiés, mais il n'a que le dernier élément qui a été vérifié, pas un tableau.Comment puis-je récupérer tous les éléments cochés d'un formulaire soumis avec les paramètres de sinatra?

Comment puis-je obtenir tous les articles cochés?

HAML:

%form{:action => "/test", :method => 'post'} 
    %input{:name=>'check',:type=>'checkbox',:value=>'item1'} item 1 
    %input{:name=>'check',:type=>'checkbox',:value=>'item2'} item 2 
    %input{:name=>'check',:type=>'checkbox',:value=>'item3'} item 3 
    %input{:type => "submit", :value => "send", :class => "button"} 

Sinatra get method 

post '/test' do 
    puts params['check'] #should be an array but is last item checked 
end 

Répondre

0

Ne serait pas que la production d'un groupe de cases à cocher avec le même nom? Si c'est le cas, params ['check'] est probablement remplacé par chaque nouvelle case à cocher.

Essayez de nommer chacun quelque chose de différent. Si vous voulez vraiment dans un tableau, essayez de piratage les noms:

%input{:name=>'check[1]',:type=>'checkbox',:value=>'item1'} item 1 
%input{:name=>'check[2]',:type=>'checkbox',:value=>'item2'} item 2 
%input{:name=>'check[3]',:type=>'checkbox',:value=>'item3'} item 3 
+0

Il affiche les noms des cases à cocher qui ont été cochées. voir mon commentaire à Devin, je suis encore un peu coincé! –

3

Très proche, mais ne pas, mais le nombre dans les tableaux

%form{:action => "/test", :method => 'post'} 
    %input{:name=>'check[]',:type=>'checkbox',:value=>'item1'} item 1 
    %input{:name=>'check[]',:type=>'checkbox',:value=>'item2'} item 2 
    %input{:name=>'check[]',:type=>'checkbox',:value=>'item3'} item 3 

Maintenant,

post '/test' do 
    puts params['check'] #puts an array of what was checked to stdout 
end 
+0

Bien, mais comment puis-je évaluer ceux qui sont réglés? 'params ['check [0]']'? Je veux ajouter un "Oui" sur une vue si l'utilisateur a sélectionné une boîte. –

0

Essayez

 

%input{:type => "checkbox", :value => "1", :name => "checkbox[]", :id => "id1"} Chk1 
%input{:type => "checkbox", :value => "2", :name => "checkbox[]", :id => "id2"} Chk2 
%input{:type => "checkbox", :value => "3", :name => "checkbox[]", :id => "id3"} Chk3 
 

Puis dans le ra ils ou sinatra

 

puts params[:checkbox] 
 

Ensuite, vous pouvez voir les éléments cochés.