Ruby on Rails, простая форма, отправка нескольких значений переменной (т. е. разных строк)

Это должно быть просто сделать, но я не могу найти никакой документации для этого. Я использую Rails 3.2 и simple_form. Я хочу создать форму, в которой пользователь может одновременно отправлять несколько строк данных. Например, форма будет такой:

Тип животного: __ Имя: _____

Я хочу, чтобы они могли отправлять несколько строк. Итак, они могут:

Animal type:  Dog    Name: Fido
Animal type:  Dog    Name: Charley
Animal type:  Cat    Name: Logan

и т.п.

Цель состоит в том, чтобы иметь возможность отправлять столько элементов, сколько есть у пользователя, при этом новые входные строки создаются с помощью javascript. Я просто не знаю, как написан код для отправки формы.


person Tim Reistetter    schedule 11.09.2012    source источник


Ответы (1)


Вам нужно будет что-то сделать с javascript. Вот некоторый код для jQuery-реализации аналогичной функции (только для 1 поля, вам нужно настроить соответственно для двух):

jQuery(document).ready(function() {
   jQuery('#linkToClick').click(function() {
   var id_count = document.getElementById('id_count');
   var newIndex = parseInt(id_count);
   var html = '<input type="text" name="type[' + newIndex + '] size=15 />';
   jQuery('#idOfWhereToAdd').before(html);
   id_count.value = newIndex + 1;
   return false;
   }) 
});

Это предполагает, что у вас есть скрытый ввод в вашей форме, предположительно со значением 0 или 1 и идентификатором id_count. Также нужен тег (ссылка) с идентификатором linkToClick.

Попробуйте и дайте мне знать, как это работает.

person Tim S    schedule 11.09.2012
comment
Если я правильно понимаю, при щелчке будет проверено текущее количество полей, добавлено новое поле с количеством полей (т.е. type1, type2, type3...), а затем увеличено количество. Это имеет смысл для добавления новых полей. А как же форма? Как это отправляется на сервер и как мне обработать это в рельсах? - person Tim Reistetter; 12.09.2012
comment
Ах, теперь я понимаю. Так что у меня будет, например, животное1 имя1, животное2 имя2 и т. д. Мне просто нужно перебрать их и сохранить в БД. - person Tim Reistetter; 12.09.2012
comment
Ну, вышеизложенное работает в php. Когда форма отправлена, у вас есть массив «типа», который вы можете перебирать, чтобы получить значения, а затем сохранять их там, где вам нужно. Я не совсем уверен, как это будет работать в Ruby, но я предполагаю, что примерно так же. Но да, похоже, у вас есть идея! - person Tim S; 13.09.2012