Rails Ajax - 通过javascript加载局部视图

时间:2013-01-27 04:31:11

标签: ruby-on-rails ajax partial-views

我正在构建一个类似Twitter的小型Feed。用户有输入,并且您有输入的输入。

Feed实际上是一个帖子列表。每个帖子的视图都由_post.html.haml部分视图定义。

我有一个AJAX post方法,可以在后端创建一个新帖子。问题是您必须刷新页面才能实际查看Feed上显示的帖子。

我想将html附加到Feed列。但是,我使用部分视图在Feed列上创建了一个帖子,该视图接收帖子详细信息的局部变量。

部分视图位于服务器端。我如何仍然使用相同的局部视图来获取我创建的新帖子的html代码,以便我可以将其附加到Feed列而无需刷新页面。

谢谢!

2 个答案:

答案 0 :(得分:1)

在您发布的操作中尝试render(:update)

render(:update) do |page|
  page.replace_html 'divID', :partial => 'your-partial'
end

答案 1 :(得分: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
 }
});