0

我有一个 for 的 web 布局,看起来像这样

<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 中是否有 Rails Ajax 帮助程序或 RJS 函数或其他东西可以用来在页面加载和呈现(没有帖子)后触发“帖子”的加载?

(如果发生政变,我只需从 link_to_remote 调用中复制生成的 JS 代码,然后从主体上的 onload 处理程序中调用它)。

4

2 回答 2

6

当然有,毕竟是 Rails :)

这样的事情会做:

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

remote_function 将为您提供与使用 rails ajax 帮助程序时执行的相同的 javascript。

于 2010-01-19T20:46:09.950 回答
1

像这样使用 jQuery 不显眼地做到这一点:

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

将此代码放入页面包含的 JavaScript 文件中。您需要将上面的“posts_partial_path”替换为实际的 URL 字符串,JavaScript 代码中没有 Rails 帮助程序。在此处阅读有关使用 jQuery 进行 AJAX 调用的信息:http: //api.jquery.com/jQuery.ajax/。像冠军一样工作。

沃尔特·吉列特

于 2012-04-24T23:49:28.107 回答