2013-07-08 2 views
0

У меня есть приложение 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, поэтому он был главным образом вырезать и вставлять из онлайн-материалов)

ответ

0

Исправлено. У кого-нибудь еще с этой проблемой:

Мне нужно было сделать файл show.js вместе с файлом show.html для графиков. В том, что js, у меня были данные графа повторно, таблица переделана из данных, и график, перерисованный с этой таблицей. В контроллере Users я поставил блок response_to, где я указал как format.html, так и format.js. После этого все сработало. Нет обновления, графики просто перерисовываются с новыми данными после попадания в поля даты.

Смежные вопросы