在JSON JBuilder中渲染html partial

Kyl*_*cot 14 ruby ruby-on-rails jbuilder ruby-on-rails-4

我正在使用Rails 4中的JBuilder渲染一些学生的JSON.我希望每个学生都有一个"html"属性,其中包含给定学生的HTML部分:

[
  { html: "<b>I was rendered from a partial</b>" }
]
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

json.array! @students do |student|
  json.html render partial: 'students/_student', locals: { student: student }
end
Run Code Online (Sandbox Code Playgroud)

但这给了我:

Missing partial students/_student with {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee, :haml]}.
Run Code Online (Sandbox Code Playgroud)

mec*_*ish 17

您必须指定部分格式,因为默认情况下Rails将使用当前格式(json)查找部分格式.例如:

render partial: 'students/student.html.erb'
Run Code Online (Sandbox Code Playgroud)


ube*_*ama 5

您需要指定部分格式。

json.array! @students do |student| json.html render(student, formats: [:html]) end