【问题标题】:How do I handle multiple values from a single select field in Sinatra?如何处理 Sinatra 中单个选择字段中的多个值?
【发布时间】:2015-06-12 17:06:04
【问题描述】:

我有一个 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 或其他前端技巧来更改值的发送方式。有没有一种在服务器端正确处理这个问题的好方法?在这个项目之前,我没有与 Sinatra 合作太多。

【问题讨论】:

  • This discussion 暗示如果您将名称格式化为数组,它将起作用。你试过&lt;select name="multi_select[]"...
  • 天啊!是的,这就解决了。如果您想将评论移至回复。我很乐意将其标记为正确答案。还有,谢谢!

标签: html ruby select post sinatra


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-12-10
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2022-11-27
    • 1970-01-01
    • 2016-04-22
    相关资源
    最近更新 更多