簡體   English   中英

Rails 使用 JSON 對象呈現部分

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM