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 AjaxヘルパーまたはRJS関数、あるいはページがロードされてレンダリングされた後(投稿なしで)「投稿」のロードをトリガーするために使用できる何かがRailsにありますか?

(putschが問題になった場合は、生成されたJSコードをlink_to_remote呼び出しからコピーし、本体のonloadハンドラーから呼び出すだけです)。

4

2 に答える 2

6

確かにあります、結局のところ、それはRailsです:)

そのようなことはするでしょう:

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

remote_functionは、railsajaxヘルパーを使用したときに実行されるのと同じ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文字列に置き換える必要があります。RailsヘルパーはJavaScriptコードでは使用できません。jQueryを使用したAJAX呼び出しの作成については、http://api.jquery.com/jQuery.ajax/を参照してください。チャンピオンのように機能します。

ウォルター・ジレット

于 2012-04-24T23:49:28.107 に答える