2015-04-07 2 views
1

У меня есть HTML-форма с элементом на странице, которая является частью приложения Sinatra, например.Как обрабатывать несколько значений из одного поля select в 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> 

Если пользователь выбирает & C из multi_select, обработчик POST в Синэтрой должна возвращать выбранные значения, а потому, что params является хэш, это только возвращает последнее выбранное значение (так params[:multi_select] = " C ").

По различным причинам я не могу использовать Javascript или другие интерфейсные трюки, чтобы изменить способ отправки значения. Есть ли хороший способ справиться с этим правильно на стороне сервера? Я не много работал с Sinatra до этого проекта.

+0

[Это обсуждение] (https://groups.google.com/forum/#!topic/sinatrarb/qA8tNbtMApE) следует, что при форматировании имени как массив будет работать. Вы пробовали '