Просто? Отправить массив Jquery в rails controller # действие

#jquery #ruby-on-rails #json #post

#jquery #ruby-on-rails #json #Публикация

Вопрос:

Кажется, не могу понять, как я могу отправить массив запросов (json) в rails controller #действие

У меня так же, как

 var myarray = []; ( with values )
  

Мое действие контроллера, которое я хочу опубликовать:

 def process
end
  

Везде я нахожу ответы о том, как получить JSON -> Jquery
Но мне нужно наоборот. Кто-нибудь знает, как это сделать? Не может быть так сложно ?!

Комментарии:

1. Вы хотите post (вспышка экрана, перезагрузка страницы) или AJAX Post в фоновом режиме?

Ответ №1:

Вероятно, есть несколько способов сделать это, но вот один. Используйте некоторые JS, подобные этому, для отправки на ваш контроллер:

 var target = "your-action-url";
var myarray = [1,2,3,etc];
$.ajax({
    type: 'get',
    url: target   '?order=' myarray.join(',') ,
    dataType: 'script'
});
  

Затем в вашем контроллере:

 data = params[:order].split(',')
  

Теперь у вас есть массив, который соответствует тому, что у вас было в javascript.

Комментарии:

1. Вы можете легко столкнуться с проблемами с большими массивами, поскольку URL-адреса имеют ограничение на количество символов

2. Я публикую только целые числа и не более 20, так что это сработает, что-то, что нужно изучить позже (если у кого-то есть предложения по исправлению, это более чем приветствуется). Произошла ошибка сервера 500, потому что я забыл создать файл просмотра! кажется, теперь все работает отлично, спасибо!

3. вы всегда можете опубликовать вместо того, чтобы решать проблему с размером URL. На самом деле я лично не сталкивался с проблемой ограничения символов URL более десяти лет, хотя об этом стоит знать.

Ответ №2:

В документации jQuery есть информация о публикации: jQuery.post()

Помогает ли что-то подобное? $.post('path-to-process-action', {myarray: myarray} )

Комментарии:

1. Это хорошо, но вместо того, чтобы просто передавать массив в качестве аргумента данных, вы должны использовать карту, например $.post('path-to-process-action', {myarray: myarray})

2. Отредактированный ответ для использования версии карты