#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. Отредактированный ответ для использования версии карты