json erb模板找不到其他html部分

2023-11-25

我试图有一个 json 响应,其中某些值是由部分呈现的 html

#projects_Controller.rb

def index
  respond_to do |f|
    f.json 
  end
end

# index.json.erb

  {
     "html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer') %>"
  }

但我收到以下错误:

  ActionView::Template::Error (Missing partial projects/disclaimer with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>
  [:json], :locale=>[:en, :en]} in view paths "c:/rails/app/views", "c:/rails/vendor/plugins/more/app/views", "C:/Ruby192/lib/ruby/gems/1.9.1/gems/devise-1.1.8/app/views")

看起来 JSON 请求渲染部分名称中包含 .json.erb,但不是 .html.erb,这就是我所拥有的。 有没有办法让我指定“html”。

添加: 如果请求是“js”,并且在index.js.erb中我呈现几乎相同的代码: #index.js.erb

  disclaimer = {
     "html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer') %>"
  }

它确实找到了projects/disclaimer.html.erb并正确呈现它。我想知道为什么会存在这样的不一致:如果请求 js,则其模板中的任何部分渲染都会查找partial_name.html.erb,但如果请求json,则部分渲染会请求partial_name.json.erb?

谢谢


明白了:只需要 .json.erb 文件中的这一行

所以完整的index.json.erb

      <% self.formats = ["html"] %>
      disclaimer = {
        "html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer',
                    :content_type => 'text/html'), 
                    :locals => {:localVariable => @localVariable} 
                %>"
      }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

json erb模板找不到其他html部分 的相关文章

随机推荐