2011-08-25 3 views
1

J'ai quelques cases à cocher sur une vue, que je veux évaluer sur une autre, mais je ne comprends pas ce que ça fait.Récupérer des valeurs de cases à cocher [Ruby/Sinatra (Rails)]

J'ai lu les messages/blogs indiquant les différentes approches de la name: -

update_params[]      # array 
update_params[0], update_params[1] # known indexed array 
update_params0, update_params1  # differently named 

va donc avec le premier qui semble le plus commun: -

# views/index.erb 
<input type="checkbox" name="update_params[]" value="Copy" />Update the host<br/> 
<input type="checkbox" name="update_params[]" value="Start" />Start the software<br/> 

Si le value indexé ? 0, 1?

Je veux deux résultats

1) Afficher les options sélectionnées dans la vue index.erb sur la vue version.erb.

Alors qu'il ressemble à: -

Copy : Yes 
Start : No 

Actuellement, j'ai: -

# views/version.erb 
<p>Copy : <%= params['update_params[0]'] %></p> 
<p>Start : <%= params['update_params[1]'] %></p> 

2) Eval les options pour passer à un script afin qu'ils deviennent des options de ligne de commande, à savoir -c, -l

donc mon "contrôleur"

# update.rb 
helpers do 
    def run_update(version, host, params) 
    command = "./update.sh #{params} #{host}" # -c -l 
    @ok = system(command) 
    end 
end 

post '/version' do 
    run_update(params[:version_list], params[:host], params[:update_params]) 
    erb :version 
end 

Répondre

4

Peut-être que, au lieu de compter sur index, vous pouvez utiliser des clés dans le tableau? Par exemple:

<input type="checkbox" name="update_params[copy]" value="Copy" />Update the host<br/> 
<input type="checkbox" name="update_params[start]" value="Start" />Start the software<br/> 

Alors, vous pouvez faire des choses comme:

params[:update_params][:copy] 
Questions connexes