如何处理Sinatra中单个选择字段的多个值?

时间:2015-04-07 22:55:38

标签: html ruby select post 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>

如果用户选择A&amp;来自multi_select的C,Sinatra中的POST处理程序应该返回所选的值,但由于params是一个哈希,它只返回最后选择的值(所以params[:multi_select] =“C”)。

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

1 个答案:

答案 0 :(得分:4)

This discussion意味着multiselect的名称需要看起来像Sinatra的数组才能获取所有值。尝试将其更改为:

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