我有一个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合作过多。
答案 0 :(得分:4)
This discussion意味着multiselect的名称需要看起来像Sinatra的数组才能获取所有值。尝试将其更改为:
<select name="multi_select[]" id="multi_select" multiple>