1

私は小さなツイッターのようなフィードを構築しています。ユーザーには入力があり、入力のフィードがあります。

フィードは事実上、投稿のリストです。各投稿のビューは、_post.html.haml部分ビューによって定義されます。

バックエンドで新しい投稿を作成する AJAX 投稿メソッドがあります。問題は、フィードに表示される投稿を実際に表示するには、ページを更新する必要があることです。

フィード列に html を追加したいと思います。ただし、投稿の詳細のローカル変数を取得する部分ビューを使用して、フィード列に投稿を作成します。

部分ビューはサーバー側にあります。同じ部分ビューを使用して、作成した新しい投稿の html コードを取得し、ページを更新せずにフィード列に追加できるようにするにはどうすればよいですか。

ありがとう!

4

2 に答える 2

1

投稿先のアクションでrender(:update)を試してください。

render(:update) do |page|
  page.replace_html 'divID', :partial => 'your-partial'
end
于 2013-01-27T04:43:43.117 に答える
1

回答しやすいようにコード スニペットを投稿します。とにかく、あなたはこのようにすることができます。get ajax リクエストを使用して新しい投稿を作成すると、コントローラー アクションに入ります。コントローラーアクションでは、次のことができます。

   def get_new_post   #This is the controller action called by your ajax
     post = Post.create!(ajax_params)
     render :partial => "post", :locals => {:post => post}
   end

ビューでは、次のように新しい投稿を投稿リストに追加します。

$.get("ajax_request", function(data, status){
 if(status=="success"){  //if your ajax is success
   $("#post-list").append(data)  //Assuming post-list is the div id of list of posts
 }
});
于 2013-01-27T04:51:20.197 に答える