5

フォームを送信した後に Ajax を使用してパーシャルを更新することに関して、いくつかの質問と回答が見つかりました。しかし、私の質問は「もっと簡単ですか?」です。数秒ごとにパーシャルをリロードして、新しいデータをロードしたいだけです。これは本当に難しいことではありません。Rails 2.3 で似たようなことをしたことを覚えていますが、どこにも答えが見つかりません。

基本的に、次のようにパーシャルをレンダリングする show.html.erb があります。

<div id="latest_post">
    <%= render :partial=>'info/latest', :object=>@user, :as=>:user %>
</div>

app/views/info/_latest にある部分ファイル

<% post = user.posts.last %>
<h1>Last Post</h1>
<p><%= post.content %></p>

latest_post div を 30 秒ごとに更新したいだけです。助けてください!

4

1 に答える 1

4

答えは少し複雑です。

ステップ 1: Javascript のsetInterval関数を jQuery の関数と共に使用$.get()して、ページをロードします/users/1/posts/latest

setInterval(function(){
  $.get("/users/1/posts/latest.js", function(data){
    $("latest_post").html(data);
  },
  "html")
}, 30000);

ステップ 2: を作成し、フォルダーlatest.js.erbに入れます。app/views/posts

の内容latest.js.erb:

<%= render partial: 'posts/latest', object: @user.posts.last, as: :post %>

ステップ 3: 上記のパーシャルを好きなように作成します (パーシャルが必要ない場合は、div の内容全体をlatest.js.erbファイルに書き込むことができます)。

ステップ 4: が使用するために、 などをPostsController定義する最新のメソッドを に追加します。@userlatest.js.erb

ステップ 5: に追加get '/latest'するroutes.rb

于 2012-08-03T18:31:26.197 に答える