Задать вопрос

Как передать значения input-ов в Array поле MongoDB в Sinatra с помощью Mongoid?

Во вьюхе есть такой код:
%form{"method" => "post", "action" => "/order"}
  %input{"name" => "firstname"}
  %input{"name" => "order", "value" => "burger", "type" => "checkbox"}
  %input{"name" => "order", "value" => "nuggets", "type" => "checkbox"}
  %input{"name" => "order", "value" => "mtdew", "type" => "checkbox"}
  %input{"type" => "submit"}

И, соответственно, такой экшн:
post "/order" do
  Order.new(
    :name => params['name'],
    :order => params['order']
  ).save
end

Теперь если посмотреть в базу, то можно увидеть, что :name передался правильно, а вот :order записал только последнее значение.
Я понимаю, что экшн неправильный, но ума не приложу как передавать массив в поле.

Заранее благодарю за ответы.
  • Вопрос задан
  • 2523 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
Вы неправильно указали имя поля. Если Вам требуется множественный выбор, то имя поле должно заканчиваться на []:
...
 %input{"name" => "order[]", "value" => "burger", "type" => "checkbox"}
  %input{"name" => "order[]", "value" => "nuggets", "type" => "checkbox"}
  %input{"name" => "order[]", "value" => "mtdew", "type" => "checkbox"}
...


В этом случае в params['order'] будет лежать массив, а не строка.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы