динамически обновляем HTML-страницу в rails3 - PullRequest
0 голосов
/ 22 января 2011

У меня есть текстовая область html, которая использует ajax-autocomplete, где он заполняет раскрывающийся список, когда я начинаю печатать. Когда я выбираю запись из выпадающего списка, она устанавливает поле для идентификатора этого объекта.

Как только я получу идентификатор объекта, есть ли способ сделать что-то подобное?

<% @myObjects.find(1) do |myObj| %>
  <h1><%= myObj.attr1 %><h1>
  <h2><%= myObj.attr1 %><h2>
<% end %>

Прямо сейчас, когда я получаю идентификатор объекта, я использую функцию attr () jquery, чтобы установить значения, которые раскрывают мою логику javascript, которая мне не очень нравится. Есть ли способ активировать поле? Или, скрыв поля и где заполнен идентификатор, покажите поле, и пусть ruby ​​сделает свое дело с myObjects.find?

UPDATE:

Прямо сейчас, как я заполняю поля в представлении следующим образом:

$(function() {      
  // Executes a callback detecting changes with a frequency of 1 second
  $("#id_element_placeholder").observe_field(1, function(){                                     
    //alert('Change observed! new value: ' + this.value );
    $.ajax({
      type: "GET",
      dataType: "json",
      url: "/myobj/get/" + this.value,
      success: function(data){
        $('#last_name').attr('value', data.myobj.last_name);
        $('#first_name').attr('value', data.myobj.first_name);                  
      }
    });
  });
}); 

Есть ли способ обнародовать вышеуказанный код JavaScript?

Ответы [ 2 ]

4 голосов
/ 27 января 2011

В вашем javascript нет ничего плохого, и вы, похоже, путаетесь между технологиями на стороне клиента и на стороне сервера. Ruby не может напрямую обновить вашу страницу после того, как она была отправлена ​​вашему пользователю. Он находится на вашем веб-сервере, и ваша страница была отправлена ​​в браузер клиентов. Однако он может отправить javascript в ответ на дополнительный запрос, сделанный вашим приложением из браузера клиентов, чтобы сделать именно это, так же, как вы делаете.

Вы можете отправить новый HTML-фрагмент в ваш браузер и заменить весь узел, но на самом деле в этом нет никакого смысла. То, что вы делаете, так же, как и все, кто использует javascript.

0 голосов
/ 30 января 2011

Ответ прост, вы не можете :) То, что вы делаете, это нормально, использование AJAX для таких вещей - способ сделать такие вещи.Если вас беспокоят экспозиции, не смотрите на javascript, посмотрите, что серверный код позволяет пользователю делать с методами get / post;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...