【发布时间】:2015-11-28 05:48:03
【问题描述】:
在我的 rails 应用程序中,我在创建帖子后有一个 javascript 回调,该回调会轮询处理端点以检查图像是否已完成处理,然后像这样更新视图:
create.js.erb 创建回调
// start polling for processed image
function imageProcessed() {
$.ajax({ url: "/posts/" + <%= @post.id %> + "/processing"})
.done(function(data) {
if (data.processing) {
setTimeout(imageProcessed(), 2000);
} else {
// append image url when processed
$("#js-capture-container").html('<img src="' + data.image_url + '" alt="image">');
}
});
}
imageProcessed();
posts_controller.rb 端点
def processing
data = { processing: @post.image_processing }
if !@post.image_processing?
data[:image_url] = @post.image_url(:pair)
end
render json: data
end
这很好用,但我想获取在 ajax 中返回的数据,并用这些数据渲染已经存在的 _post.html.erb 部分。
类似于返回一个更新的@post 实例,然后将该对象渲染到部分中。
"<%= escape_javascript(render @post) %>" 在 create.js.erb 中
任何想法都会有很大帮助,谢谢!
【问题讨论】:
-
通常为此,您最初会渲染出使用@post 对象的部分内容。然后,您可以使用 params 中的数据更新帖子,然后执行
render :partial => "posts/my_partial", :locals => {:post => @post}或类似的操作。
标签: javascript ruby-on-rails ruby ajax