Rails: Ajax: Изменения Onload - PullRequest
       0

Rails: Ajax: Изменения Onload

0 голосов
/ 19 января 2010

У меня есть веб-макет для, который выглядит примерно так

<html>
  <head>
  </head>

  <body>
    <div id="posts">
      <div id="post1" class="post" >
         <!--stuff 1-->
      </div>
      <div id="post2" class="post" >
         <!--stuff 1-->
      </div>

      <!-- 96 more posts -->

      <div id="post99" class="post" >
         <!--stuff 1-->
      </div>
    </div>          

  </body>
</html>

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

В Rails я попытался использовать "link_to_remote" для обновления всех элементов.Я также настроил контроллер постов для отображения коллекции постов, если это был запрос ajax (request.xhr?).Работало нормально и очень быстро.Однако обновление пустого элемента div запускается нажатием на ссылку.Я хотел бы, чтобы такое же действие происходило при загрузке страницы, чтобы мне не нужно было вставлять ссылку.

Существует ли вспомогательная функция Rails Ajax или функция RJS или что-то в Rails, что я мог бы использовать для запуска загрузки "posts" после загрузки и отображения страницы (без записей)?

(Если Putch доходит до Shove, я просто скопирую сгенерированный JS-код из вызова link_to_remote и вызову его из обработчика onload в теле).

Ответы [ 2 ]

6 голосов
/ 19 января 2010

Конечно, это Rails, в конце концов:)

Что-то подобное подойдет:

<% javascript_tag do %>
  $(document).ready(function() {
    <%= remote_function(:update => "posts", :url => posts_partial_path) %>
  });
<% end %> 

Функция remote_function предоставит вам тот же javascript, который выполняется при использовании помощников rails ajax.

1 голос
/ 25 апреля 2012

Сделайте это с помощью jQuery, ненавязчиво так:

$(document).ready(function(){
  $.ajax({url: 'posts_partial_path',
           success: function(data) {
             $('#posts').html(data);
           }
  });
});

поместив этот код в файл JavaScript, включенный в вашу страницу. Вы должны заменить 'posts_partial_path' выше фактической строкой URL, помощники Rails не доступны в коде JavaScript. Прочтите о том, как делать вызовы AJAX с помощью jQuery, здесь: http://api.jquery.com/jQuery.ajax/. Работает как чемпион.

Уолтер Джиллетт

...