askhat
@askhat
Full Stack Developer

Как передать значения 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 записал только последнее значение.
Я понимаю, что экшн неправильный, но ума не приложу как передавать массив в поле.

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


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

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

Войти через центр авторизации
Похожие вопросы
Paycos Екатеринбург
от 100 000 руб.
Shore Мюнхен
от 62 000 до 72 000 eur.
от 80 000 до 220 000 руб.
18 янв. 2020, в 09:01
3500 руб./за проект
18 янв. 2020, в 08:49
60000 руб./за проект
18 янв. 2020, в 08:36
16000 руб./за проект