我有一个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/