[英]Rails render partial with JSON object
在我的 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) %>"
in create.js.erb
任何想法都會有很大幫助,謝謝!
我能夠通過將部分呈現為 json 對象內的 HTML 字符串來使其工作,類似於在這個問題中所做的: rails 3 - How to render a PARTIAL as a Json response
我將post_controller.rb 中的 if 語句更改為:
if !@post.image_processing?
data[:partial] = render_to_string(@post)
end
然后在create.js.erb中將回調更改為:
$("#js-capture-container").html(data.partial);
非常好,非常干凈。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.