我正在构建一个类似Twitter的小型Feed。用户有输入,并且您有输入的输入。
Feed实际上是一个帖子列表。每个帖子的视图都由_post.html.haml
部分视图定义。
我有一个AJAX post方法,可以在后端创建一个新帖子。问题是您必须刷新页面才能实际查看Feed上显示的帖子。
我想将html附加到Feed列。但是,我使用部分视图在Feed列上创建了一个帖子,该视图接收帖子详细信息的局部变量。
部分视图位于服务器端。我如何仍然使用相同的局部视图来获取我创建的新帖子的html代码,以便我可以将其附加到Feed列而无需刷新页面。
谢谢!
答案 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
}
});