Есть два способа справиться с этим, и от вашей клиентской архитектуры будет зависеть, как вы будете это делать, поскольку стандарты HTTP не упрощают ситуацию.
Традиционно, HTTP-запросы просто используют один и тот же ключ для повторяющихся значений и оставляют это на усмотрение клиентской архитектуры, чтобы понять, что происходит. Например, у вас может быть пост-запрос со следующими значениями:
student_name=Bob+Smith&student_name=Jane+Smith&student_name=Chris+Smith
Когда получающая архитектура получит эту строку, она должна будет понять, что существует несколько ключей student_name
и действовать соответственно. Обычно это реализовано так, что если у вас есть один ключ, создается скалярное значение, а если у вас есть кратные значения одного и того же ключа, значения помещаются в массив.
Современные клиентские архитектуры, такие как PHP и Rails, используют другой синтаксис. Любой ключ, который вы хотите считать в виде массива, добавляется в квадратные скобки, например:
student_name[]=Bob+Smith&student_name[]=Jane+Smith&student_name[]=Chris+Smith
Принимающая архитектура создаст структуру массива с именем «student_name» без скобок. Синтаксис в квадратных скобках решает проблему невозможности отправки массива только с одним значением, которое не может быть обработано «традиционным» методом.
Поскольку вы используете Rails, лучше использовать синтаксис в квадратных скобках. Если вы думаете, что можете переключаться на серверную архитектуру или хотите распространять свой код, вы можете изучить более независимые методы, такие как JSON-кодирование отправляемой строки, что добавляет накладные расходы, но может быть полезно, если вы ожидаете, что ситуация должен справиться.
Здесь есть отличный пост об этом в контексте параметров JQuery Ajax .