【问题标题】:How do I render a partial to a string?如何将部分渲染为字符串?
【发布时间】:2014-01-10 15:17:24
【问题描述】:

如何将部分呈现给字符串,以便可以将其作为 JSON 响应的一部分包含在内?我必须将其放入 JSON 响应中,以便为可能的错误消息留出空间。以下代码给出了 500 服务器错误。如果我只使用一个普通的render,那么令人惊讶的是它可以工作。好吧,它只发回无法解析为 Javascript 的纯 HTML。

代码

respond_to do |format|
   format.html { redirect_to post_path(post) }
   format.js { 
     { 
       error: "",
       content: (render_to_string partial: '/comments/comment', locals: {comment: comment}, layout: false )  
     } 
   }
end

错误

模板丢失 缺少模板 cmets/create, application/create with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :raw, :ruby, : jbuilder, :haml]}。在以下位置搜索:*“C:/Users/Chloe/workspace/project/app/views”

有效,但发回纯 HTML

render partial: '/comments/comment', locals: {comment: comment}, layout: false

【问题讨论】:

    标签: ruby-on-rails json ruby-on-rails-4


    【解决方案1】:

    好的,我明白了。我必须添加render json:。我以为我之前已经尝试过,它给了我一个双重渲染错误。我猜当你render_to_string 时,可以有多个渲染。

    respond_to do |format|
       format.html { redirect_to post_path(post) }
       format.js { 
         render json: { 
           error: flash[:error],
           content: (render_to_string partial: '/comments/comment', locals: {comment: comment}, layout: false )  
         } 
       }
    end
    

    【讨论】:

      猜你喜欢
      • 2015-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 2021-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多