如何在 Sinatra 中处理来自单个 select 字段的多个值?

How do I handle multiple values from a single select field in Sinatra?

我有一个 HTML 表单,页面中有一个元素是 Sinatra 应用程序的一部分,例如

<form action="/form" method="post">
  <p>
    <label for="text">Text</label>
    <input type="text" name="text" id="text">
  </p>

  <p>
    <label for="select">Selection</label>
    <select name="select" id="select">
      <option value="A">A</option>
      <option value="B">B</option>
      <option value="C">C</option>
    </select>
  </p>

  <p>
    <label for="multi_select" multiple>MultipleSelection</label>
    <select name="multi_select" id="multi_select" multiple>
      <option value="A">A</option>
      <option value="B">B</option>
      <option value="C">C</option>
    </select>
  </p>

  <p>
    <input type="submit" name="submit" value="Submit">
  </p>
</form>

如果用户从 multi_select 中选择 A 和 C,Sinatra 中的 POST 处理程序应该 return 选择的值,但是因为 params 是一个哈希,它只有 return 是最后选择的值(所以 params[:multi_select] = "C")。

由于各种原因,我无法使用 Javascript 或其他前端技巧来更改值的发送方式。有没有一种好的方法可以在服务器端正确处理这个问题?在这个项目之前,我并没有与 Sinatra 合作太多。

This discussion 意味着多选的名称需要看起来像一个数组,以便 Sinatra 获取所有值。尝试将其更改为:

<select name="multi_select[]" id="multi_select" multiple>