Получить значения флажков [Ruby / Sinatra (Rails)] - PullRequest
1 голос
/ 25 августа 2011

У меня есть несколько флажков в одном представлении, которые я хочу оценить в другом, но я не понимаю, что он делает.

Я прочитал посты / блоги, в которых изложены различные подходы к name: -

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

Итак, первое, которое кажется наиболее распространенным: -

# 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/>

Должен ли индексироваться value?0, 1?

Итак, я хочу получить два результата

1) Отобразить параметры, выбранные в представлении index.erb, в представлении version.erb.

Чтобы это выглядело примерно так: -

Copy : Yes
Start : No

В настоящее время у меня есть: -

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

2) проверить параметры для передачи в сценарий, чтобы они стали параметрами командной строки, т.е.-c, -l

Так что мой "контроллер"

# 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

1 Ответ

5 голосов
/ 25 августа 2011

Может быть, вместо того, чтобы полагаться на индекс, вы могли бы использовать ключи в массиве?Например:

<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/>

Итак, вы можете делать такие вещи, как:

params[:update_params][:copy]
...