У меня есть приложение Rails, в котором графики Google Charts собирают данные пользователя с внешнего сервера. В пользовательской модели есть метод получения этих данных с сервера, который вызывается в методе контроллера # show users.Обновление данных Google Chart по форме submit
Метод show
возвращает JSON по умолчанию, который затем обрабатывается с использованием методов users_helper
. Они возвращают JSON-форматированную строку (а не объект JSON) для графиков Google для использования.
Я добавляю функциональность, чтобы иметь возможность выбирать дату и дату для данных. Это моя форма (в Haml):
= form_tag({:controller=>"manage/users", :action=>"show"}, :id => "datesform", method: :get, remote: true) do
= text_field_tag :date_from, "", data: {behaviour: "datepicker"}, placeholder: "Date from", :id => "date_from_box"
= text_field_tag :date_to, "", data: {behaviour: "datepicker"}, placeholder: "Date to", :id => "date_to_box"
= submit_tag ("Search"), :id => 'chart_submit_dates'
В настоящее время TimeSpan по умолчанию составляет два месяца (бывает только тогда, когда date_from/date_to PARAMS пустые). При просмотре это работает. Графики получают правильные данные и все визуализируется.
Однако при отправке формы ничего не изменится, если я не удалю атрибут remote: true
из формы. Когда я это делаю, вся страница обновляется, но графики генерируются с правильным таймфреймом данных, указанным в форме.
То, что я пытаюсь достичь, - это обновить данные графа на странице, а затем я могу вызвать повторную визуализацию графика при отправке формы. Это звучит как идеальный случай для AJAX, но все, что я пробовал, не сработало (хотя я полный noob для AJAX и javascript, поэтому он был главным образом вырезать и вставлять из онлайн-материалов)