我有一个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处理程序应该返回所选的值,但是因为params是一个散列,所以它只返回最后一个所选的值(所以params[:multi_select]=“c”)。
出于各种原因,我无法使用javascript或其他前端技巧来更改值的发送方式。有没有一个好的方法来正确处理服务器端?在这个项目之前,我和西纳特拉的合作不多。

最佳答案

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

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

关于html - 如何处理Sinatra中单个选择字段中的多个值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29502815/

10-15 18:07