Хорошо, используется несколько иной подход, но проблема решена.
Примечание: я должен был использовать Wireshark, чтобы быть в состоянии увидеть, что ад был послан по рельсам на мобильное устройство, так как нет поджигателя на мобильных браузерах .... Решение стало ясно, когда, глядя на данные, отправленные обратно в браузер, я видел, что ответ включал в себя приложение макет, в то время как я ожидал получить только строку json.
1) кнопка в виде jqm используется для вызова действия контроллера:
<div class="ui-block-c">
<%= link_to "compute", '#', class: 'compute-myval',:"data-role" => "button", :"data-ajax" => false %>
</div>
2) действие контроллера сохраняет результат в переменной экземпляра и respond_to JSON (имя контроллера является «visits_controller» и действие контроллера "вычислить")
@total = "value returned from web service"
...
respond_to do |format|
format.js #used for HTML views
format.json
end
3) существует мнение по имени
app/views/visits/compute.json.erb
, содержание которого
{ "total": "<%= @total %>" }
4) код JQuery выполняется при нажатии кнопки
$('form').on('click', '.compute-myval', function(event) {
var url;
url='/visit/compute';
url += '/' + $('#visit_field1').val();
url += '/' + $('#visit_field2').val();
url += '/' + $('#visit_field3').val();
$.ajax({
url: url,
data: $(this).serialize(),
success: function (mydata) {
$('#visit_resultfield').val(mydata.total);
},
dataType: 'json'
});
return event.preventDefault();
});
5) Для управления: мобильный формат я использую камень Mobylette. Во избежание того, что действие контроллера, инициированное через Ajax , использует мобильный формат и применяется шаблон application.mobile.erb. Мне пришлось настроить пару конфигураций для Mobylette (внутри application_controller.Р.Б.)
include Mobylette::RespondToMobileRequests
mobylette_config do |config|
config[:skip_xhr_requests] = false
config[:fallback_chains] = { mobile: [:mobile, :html, :json] }
end
Другое, что нужно, чтобы иметь под приложение/Макеты файл с именем application.json.erb , который содержит только одну строку
<%= yield %>
Так это работает, потому что нет вычислений. mobile.erb зрения, нейтрализация: JSON и шаблон не добавляет ничего
6) выход в рельсах войти в
Started GET "/visit/compute/3/78/66" for 192.168.1.7 at 2012-12-22 00:13:35 +0100
Processing by VisitsController#compute as JSON
Parameters: {"field1"=>"3", "field2"=>"78", "field3"=>"66"}
Rendered visits/compute.json.erb within layouts/application (0.1ms)
Completed 200 OK in 1335ms (Views: 5.4ms | ActiveRecord: 1.0ms)
7) поле «поле результатов» в форме Jqm заполнено всего значение.
Миссия завершена ...