Использование Sinatra и ruby ​​для взаимодействия с кнопками HTML - PullRequest
0 голосов
/ 05 февраля 2010

Раскрытие информации: Я ничего не знаю о веб-программировании

Предыстория проблемы: У меня есть камера экологических испытаний, в которой тестируются встроенные компьютеры при различных температурах. Это управляется приложением Windows. Я могу управлять камерой через ruby ​​и интерфейс Win32API управляющего приложения. Палата находится далеко от моего офиса, и я удаленно следил за состоянием и инициировал изменение через веб-интерфейс. Синатра позволяет легко показать состояние через веб-сервер.

Моя проблема: Я хочу нажать кнопку на веб-странице статуса и отправить команду через Sinatra и Ruby в приложение, не переключаясь на другую страницу. Я не могу найти какие-либо примеры или информацию для чего-то подобного.

Ответ: Вы можете использовать Ajax (как в принятом ответе), но я собираюсь написать и перезагрузить страницу. Это намного проще, но не так гладко.

Ответы [ 2 ]

1 голос
/ 06 февраля 2010

У вас уже есть форма, которая отправляет POST-обработчику и делает то, что вы хотите?

Если это так, вы можете легко сделать это ajaxy с помощью jQuery.

  1. Добавьте jquery.js в ваш публичный каталог и потребуйте его из макета

  2. Добавьте несколько js для публикации в вашем обработчике при нажатии вашей кнопки.

    // assuming your form has id=myform
    // defines a callback on submission of the form #myform.
    $("#myform").submit(function() {
      //posts the contents of the form to /action using ajax
      $.post("/action", $("#myform").serialize(), function(result){
        // assuming result is a string of the updated data in html
        // and assuming that your data goes in an element with the id data-table
        $("#data-table").html(result)
      });
      return false; // prevents the form from submitting normally
    });
    

JQuery документы для

1 голос
/ 05 февраля 2010

Я хочу […] отправить команду через (сервер) […] без перехода на другую страницу

Это известно как Ajax и обычно реализуется с использованием XMLHttpRequest .

...